一直想在shiro权限这块加入缓存,使用redis是再合适不过了,恰巧已经有大佬将shiro和redis整合在一起使用了,只需在引入pom文件中引入即可。
1 | <dependency> |
但是是使用的时候,权限配置这块,也就是重写shiro的doGetAuthorizationInfo方法这里,一直进不来,完整的控制台异常信息如下:
1 | org.crazycake.shiro.exception.PrincipalInstanceException: class com.company.project.manage.entity.UserInfo must has getter for field: id |
大概意思就是UserInfo对象中必须要有id属性,并且要有对应的get方法。在身份验证的时候就已经将userinfo信息传递给了shiro,然后redis做缓存的时候需要key,key的值就与userinfo里面的id值有关。
点开UserInfo对象一看,尴了个尬,主键的命名使用的是uid
最后把主键换成id,就运行正常了。
演示项目在我的github上面,shiro-redis插件的整合可以查看:
https://mrbird.cc/Spring-Boot-Shiro%20cache.html