我是Play2
框架的新手。我正在尝试在我的网络应用程序中维护会话。
但是有一些问题,在用户登录到网络应用程序后以及当用户尝试登录Google Sign(我正在使用谷歌分析)时会保持会话,然后当用户按下允许按钮时会话变为null
如何维持会话?这样它就不会被摧毁 这是一些相关的代码
当用户按下登录按钮
时使用此代码public Result login() {
Map<String, String[]> formData = request().body().asFormUrlEncoded();
String email[] = formData.get("email");
String password[] = formData.get("password");
if (email == null || email.equals("") || password == null || password.equals("")) {
flash("error", "Invalid email/password!");
} else {
UserDTO userDTO = new UserDTO();
userDTO.setEmail(email[0]);
userDTO.setPassword(password[0]);
userDTO = accountMGR.signin(userDTO);
if (userDTO != null)
session("user", Json.toJson(userDTO).toString());
else
flash("error", "Invalid email/password!");
}
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
}
public Result logout() {
session().clear();
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
}
这是用户按下谷歌登录按钮
时运行的代码public Result callback() {
JsonNode jsonNode = Json.parse(session("user"));
UserDTO userDTO = Json.fromJson(jsonNode, UserDTO.class);
if (userDTO.getRole().getType().equals(RoleDTO.EnRoleType.ADMIN.toString()))
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
if (request().queryString().get("code") != null && request().queryString().get("state") != null && request().queryString().get("state")[0].equals(session("state"))) { // Check if he/she is authorized
session().remove("state");
Analytics analytics = setAnalytics(userDTO, request());
session("analytics", Json.toJson(analytics).toString());
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
} else { // Create Authorization URL
String url = helper.buildLoginUrl();
session("state", helper.getStateToken());
return redirect(url);
}
}
这个特别的行会产生问题
JsonNode jsonNode = Json.parse(session("user"));
即使我在上面的方法login()