2015-04-08 2 views
2

У меня есть сервер Java Servlet с хранилищем данных, подключенным к моему приложению; Я пытаюсь внедрить систему входа в систему с использованием шаблона LoginActivity для Android Studio, используя адрес электронной почты пользователя и пароль (а не PlusBaseActivity, обрабатывающий вход в учетную запись Google), но я не знаю, как исходить отсюда:Пользовательский логин пользователя в AppEngine

вы говорите, что пользователь вошел в систему? и как я могу так настойчиво использовать свой хранилище данных? Я прочитал здесь: How to login User using UserService on AppEngine Java, что мне просто нужно вызвать метод resp.sendRedirect(userService.createLoginURL(req.getRequestURI())), и я сделал так:

@Override 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
     int size = checkDatastore(); // 0 if empty, > 0 if not empty 
     if(size==0){ 
      populateDatastore(); 
     } 

     String asyncMessage = req.getParameter("order"); 

     if(asyncMessage.equals("login")){ 
      mail = req.getParameter("email"); 
      psw = req.getParameter("password"); 

      UserService userService = UserServiceFactory.getUserService(); 
      User user = userService.getCurrentUser(); 

      String message=""; 
      resp.setContentType("text/plain"); 
      PrintWriter out = resp.getWriter(); 
      if(user == null) { 

      //Sends a temporary redirect response to the client using the 
      // specified redirect location URL and clears the buffer. 
      String uri = userService.createLoginURL(req.getRequestURI()); 
      resp.sendRedirect(uri); 
      User user1 = userService.getCurrentUser(); 
      message="No one is logged in!\n" + "Sent from App Engine at " + new Date(); 

      out.println(message); 
      out.flush(); 
     }if(user !=null) { 
      // login(user); 
      message = "Hello, " + user.getEmail() + 
        ", "+user.getNickname()+"!" + "\nSent from App Engine at "+ new Date(); 

      out.println(message); 
      out.flush(); 
     } 
    } 
} 

но метод sendRedirect() только дает мне URI. Зачем?

Кроме того, User user = userService.getCurrentUser() всегда возвращает null. Как так?

ответ

1

Это потому, что resp.sendRedirect(userService.createLoginURL(req.getRequestURI())) UserService работает только при интеграции входа в систему с учетными записями Google, как показано в документации this. Если вы хотите реализовать персонализированную систему входа в систему, вы можете сделать это разными способами. Разумеется, вам понадобится сервлет, проверяющий новые данные пользователей и хранилище данных, чтобы постоянно хранить новые учетные записи.

Смежные вопросы