Login AppEngine中的自定义用户登录
我有一个JavaServlet后端,数据存储连接到我的应用程序;我正在尝试使用Android Studio LoginActivity模板实现登录系统,使用用户的电子邮件和密码(而不是处理Google帐户登录的PlusBaseActivity),但我不知道如何从这里开始: 你怎么能说用户已登录?我怎样才能持久地使用我的数据存储?我在这里读到:我只需要调用方法Login AppEngine中的自定义用户登录,login,gae-userservice,Login,Gae Userservice,我有一个JavaServlet后端,数据存储连接到我的应用程序;我正在尝试使用Android Studio LoginActivity模板实现登录系统,使用用户的电子邮件和密码(而不是处理Google帐户登录的PlusBaseActivity),但我不知道如何从这里开始: 你怎么能说用户已登录?我怎样才能持久地使用我的数据存储?我在这里读到:我只需要调用方法resp.sendRedirect(userService.createLoginURL(req.getRequestURI()),我已经这
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
。为什么会这样?这是因为响应sendRedirect(userService.createLoginURL(req.getRequestURI())
只有在将登录名与Google帐户集成在一起时,UserService才起作用,如文档所示。
如果你想实现一个个性化的登录系统,你可以通过多种方式实现。当然,您需要一个检查新用户数据的Servlet和一个持久存储新帐户注册的数据存储