2

我有一个 Java Servlet 后端,其数据存储区连接到我的应用程序;我正在尝试使用 Android Studio LoginActivity 模板实现登录系统,使用用户的电子邮件和密码(不是处理 Google 帐户登录的 PlusBaseActivity),但我不知道如何从这里开始:

你怎么能说用户已登录?以及如何才能如此持久地使用我的数据存储?我在这里读过:如何在 AppEngine Java 上使用 UserService 登录用户,我只需要调用方法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。怎么来的?

4

1 回答 1

1

这是因为resp.sendRedirect(userService.createLoginURL(req.getRequestURI())) UserService 仅在将登录与 Google 帐户集成时才有效,如文档中所示。如果你想实现一个个性化的登录系统,你可以通过多种方式做到这一点。当然,您将需要一个检查新用户数据的 Servlet 和一个数据存储来持久存储新帐户注册。

于 2015-04-21T14:58:41.980 回答