之前我们整合 Shiro,完成了登录认证和权限管理的实现,登录认证没什么说的,需要实现 AuthorizingRealm 中的 doGetAuthenticationInfo 方法进行认证,但是我们在实现 doGetAuthorizationInfo 权限控制这个方法的时候发现以下两个问题: 第一个问题:我们在 ShiroConfig 中配置链接权限的时候,每次只要有一个新的链接,或则权限需要改动,都要在 ShiroConfig.java 中进行权限的修改。而且改动后还需要重新启动程序新的权限才会生效,很麻烦。解决办法就是将这些链接的权限存入数据库,在前端可以提供增删改查的功能,在配置文件中编写权限的时候从数据库读取,当权限发生变更的时候利用 ShiroFilterFactoryBean 的清空功能,先 clear,再 set。这样就可以做到到动态的管理权限了。 第二个问题:每次在访问设置了权限的页面时,都会去执行 doGetAuthorizationInfo 方法来判断当前用户是否具备访问权限,由于在实际情况中,权限是不会经常改变的。解决办法就是进行缓存处理。