使用play2框架

时间:2016-07-21 13:07:58

标签: java scala playframework playframework-2.0

我是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()

中设置会话

0 个答案:

没有答案