http本身无状态,说白了就是不保存任何用户信息。 所以引入cookie(客户端方案)、session(服务端方案)来保存用户信息:
这些信息通常包括什么,不能包括什么呢?
: 1. 身份信息、登陆状态 2. 用户的个性配置、权限列表 3. 其他的一些通用数据(比如购物车)4 登录凭证, 权限 ?
: session不适合保存比较多的信息,防止服务端压力过大。
: 一般只存ID
: 密码不宜放进session。 private transient String password; 且分布式项目的缘故。
session相关信息:
1 失效只能是超时或者invalidate(); 关闭浏览器不会删除服务端的session,但是可能会删除cookie保存 的sessionId。
2 session实现的‘记住我’并不安全。https://coolshell.cn/articles/5353.html。 记住我相当于自动查数据库。
至于token为什么比sessionId安全,CSRF攻击的方式:被骗去点了个链接,被恶意的JS提交的等
3 一般都是用redis模拟session。