在此之前,我是使用自己编写的web安全框架完成基于角色role的权限验证的,在集群环境中只需要将session中的信息存放到redis中即可。然而换成Shiro后,我发现事情麻烦了很多,因为需要学习Shiro的文档,自定义SessionDAO实现Redis的Session存储,但是这里面还是有一些坑。
通过Reids实现Shiro Session共享
首先在集群环境下,我们不能使用 servlet 规范中的 session, 因此对于web应用,必须配置 Shiro 使用 native session(对应DefaultSessionManager类)。然后再自定义SessionDAO接口的实现RedisSessionDAO,并让 native session 使用之。对应的 Spring Bean配置如下:
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 使用native session
securityManager.setSessionManager(sessionManager());
securityManager.setRealm(myRealm());

最低0.47元/天 解锁文章
526

被折叠的 条评论
为什么被折叠?



