繁体   English   中英

在Play 2框架(Java)中,如何在身份验证后将User对象添加到会话中

[英]In Play 2 framework (Java), how to add User object to session after authentication

我查看了“ zentasks”示例代码,以了解一些基本的用户登录和安全性知识。 Appication控制器具有一个authenticate方法 ,在该方法期间,将调用User.authenticate方法 以下是这些链接中的几个代码段:

public static Result authenticate() {
    Form<Login> loginForm = form(Login.class).bindFromRequest();
    if(loginForm.hasErrors()) {
        return badRequest(login.render(loginForm));
    } else {
        session("email", loginForm.get().email);
        return redirect(
            routes.Projects.index()
        );
    }
}
...
public static class Login {

    public String email;
    public String password;

    public String validate() {
        if(User.authenticate(email, password) == null) {
            return "Invalid user or password";
        }
        return null;
    }

}

如您所见,如果它进行身份验证(即找到一个User对象),则authenticate方法将“ email”添加到会话中。 我想改为添加完整的用户对象,但是在执行会话的控制器操作中,没有User对象。 我不想重新查询数据库,我想使用在Login.validate找到的同一User对象。 有什么好方法吗?

您是否有理由不能简单地在登录类中添加字段?

public static class Login {

    public String email;
    public String password;
    public User user;

    public String validate() {
        user = User.authenticate(email, password);
        if(user == null) {
            return "Invalid user or password";
        }
        return null;
    }
}

并非一定会对您有帮助,但查看API似乎您无法将对象(仅字符串)添加到会话中。

http://www.playframework.org/documentation/api/2.0.4/java/play/mvc/Http.Session.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM