RefireChips
session中一般存储的都是一些不易变动的信息,如果有的话,也应该在发生变化时同步修改session中的值
Woodo
byte[]二进制数组,避免不同环境下因为编码的原因造成乱码的问题。假如用string,在真实的环境下,shiro在一台web服务器上,redis在另一台web服务器上,如果2台服务器设置编码不一致,程序中也没有特定指定key,value的编码,就可能传过去之后出现乱码的问题。而二进制数不会乱码。
慕仙7187119
登陆时是用户名,登陆后访问资源url是根据每次访问携带的token吧,token经过shiro拦截器解析后,会得到该token的username信息的,就进入了shiro控制范围了。
qq_慕妹0599684
你这个没有对象的野指针
类JedisUtil加@Component注解
慕数据3162479
redis并没有要求一定要用字节数组来存储数据,它提供了五种基本存储类型来满足日常的应用场景:字符串、哈希、列表、集合、有序集合!所谓的存储字节数组,其实只是开发人员把对象采用一定的序列化工具序列化后再进行存储。为了能够提高redis性能,建议合理设计存储内容。
慕it18
真的太感谢了哈哈 上周没找到 苦恼的 有点都不知道老师咋生成的
未卜先知
在以后你需要从redis中拿去session时是要使用的
protected Session doReadSession(Serializable sessionId) {
if (sessionId == null) {
return null;
}
byte[] key = getKey(sessionId.toString());
byte[] value = jedisUtil.get(key);
return (Session) SerializationUtils.deserialize(value);
}
慕慕6293735
慕无忌8477532
他是将session 放入了redis中了,再使用sessionID从Redis中取出,redis是存储的是二进制数据所以可以这么做
番茄盐煎肉
这里的共享是在分布式的情景下的,如果是单机应用,就没有共享这一说法了。
session是由处理请求的服务器创建、持有、销毁的,如果是多台服务器,即分布式,如果同一用户的第一次请求被a服务器处理,session则在a服务器那里,如果第二次请求被分配到b服务器,b服务器则拿不到session。
这里session的共享是通过储存在redis中实现的,当a服务器创建好session后,保存进redis中,这样b服务器也能从redis中拿到session。
慕侠2041016
当你执行subject.login 的时候会去作认证
qq_蝉雨_0
自己实现收获更大,也是老师提倡的.代码传上来反而不好