现象:
项目使用了shiro进行认证,配置了rememberMe后,死活不起作用
原因:
浏览器对cookie的大小有限制,总大小不能超过4K,服务器返回给浏览器的cookie有5k多,所以浏览器直接忽略了cookie而没有保存rememberMe这个cookie。
解决:
这串cookie其实是对 Principal 进行了序列化后再Base64的结果,要缩短cookie的长度,就需要减少Principal 的数据量,我因为把整个用户的数据(包括菜单资源)全部赋给了Principal ,导致Principal 过大,最后使用简单的对象只保存了用户的用户名和ID,减小Principal ,从而缩短了cookie的长度,解决了这个问题。