5 java cookies session remember-me playframework
我在Play的第一个网站上工作!框架,有时我在用户登录时调用此方法:
static void connect(User user){
session.put("userid", user.id);
}
Run Code Online (Sandbox Code Playgroud)
只需将用户ID存储在会话中,我就可以检查它是否在每个请求中设置,工作正常.问题是,一旦浏览器关闭,cookie就会丢失,用户需要再次登录.我想创建一个"记住我"选项,似乎唯一的方法是创建一个cookie并将其与响应一起发送,如下所示:
response.setCookie("user", userdata, "14d");
Run Code Online (Sandbox Code Playgroud)
所以我想知道,创建一个会话有什么意义,当它做同样的事情时?(但不会让我对cookie时间有任何控制权).而我还没有发现的另一件事是如何从请求中读取cookie?
(而且我知道用setCookie创建的cookie没有加密,我需要调用Crypto.sign()
)
1) 比赛正在进行中!始终通过 cookie 维护(即在客户端),这归因于“不共享”方法。
2) 如果您使用安全模块(或者如果您正在编写自己的代码,则可以查看代码并遵循),“authenticate()”方法采用参数“remember”并将会话设置为 30 天 ( response.setCookie("rememberme", Crypto.sign(username) + "-" + username, "30d");
)
IE。如果用户不选择“记住”,他们的会话只会持续到浏览器关闭为止。
3)真正的区别是,正如您所提到的,session.put()不允许设置会话超时。如果您想延长会话,请在 cookie 上设置它。
4) 如果您希望在用户执行 CRUD 时进行额外的身份验证(即使用户选择“记住”或您明确扩展了他们的会话),最好将用户名/id 设置为缓存(而不是再次为会话设置另一个标识符) )并在用户注销时将其清除。如果您选择使用像 memcache 这样的分布式缓存,这将能够很好地扩展。
5)从cookie中读取,request.cookies.get("name")
很方便。
归档时间: |
|
查看次数: |
6316 次 |
最近记录: |