加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 创建会话和cookie之间的区别?

发布时间:2020-12-14 19:14:47 所属栏目:Java 来源:网络整理
导读:我在Play的第一个网站上工作!框架,有时我在用户登录时调用此方法: static void connect(User user){ session.put("userid",user.id);} 只需将用户ID存储在会话中,我就可以检查它是否在每个请求中设置,工作正常.问题是,一旦浏览器关闭,cookie就会丢失,用户

我在Play的第一个网站上工作!框架,有时我在用户登录时调用此方法:

static void connect(User user){
    session.put("userid",user.id);
}

只需将用户ID存储在会话中,我就可以检查它是否在每个请求中设置,工作正常.问题是,一旦浏览器关闭,cookie就会丢失,用户需要再次登录.我想创建一个“记住我”选项,似乎唯一的方法是创建一个cookie并将其与响应一起发送,如下所示:

response.setCookie("user",userdata,"14d");

所以我想知道,创建一个会话有什么意义,当它做同样的事情时? (但不会让我对cookie时间有任何控制权).而我还没有发现的另一件事是如何从请求中读取cookie?

(而且我知道使用setCookie创建的cookie未加密,我需要调用Crypto.sign())

最佳答案
1)一场比赛!始终通过cookie维护(即在客户端),这归因于“无分享”方法.

2)如果你使用安全模块(或者你可以查看代码,如果你自己编写则遵循),’authenticate()’方法采用参数’remember’并将会话设置为30天(响应. setCookie(“rememberme”,Crypto.sign(用户名)“ – ”用户名,“30d”);)

即.如果用户不选择“记住”,他们的会话将持续到浏览器关闭为止.

3)真正的区别在于,正如您所提到的,session.put()不允许设置会话超时.如果要扩展会话,请在cookie上设置它.

4)如果您想在用户执行CRUD时进行额外的身份验证(即使用户选择“记住”或者他们的会话已被您明确扩展),最好将用户名/ ID设置为缓存(而不是再次将其他标识符设置为会话) )并在用户注销时将其清除.如果您选择使用像memcache这样的分布式缓存,这将很好地扩展.

5)要从cookie中读取,request.cookies.get(“name”)会很方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读