Shiro11-Shiro 整合开发-realm 授权

实现流程

  1. 我们在 Spring-shiro.xml 中配置过滤规则.
<!--商品查询需要商品查询权限 ,取消url拦截配置,使用注解授权方式 -->
/items/queryItems.action = perms[item:query]

如果有多个权限, 用逗号分隔perms[item:query,.....]

  1. 用户在认证通过后,请求/items/queryItems.actionurl
  2. PermissionsAuthorizationFilter拦截, 拦截后发现需要item:query权限.
  3. PermissionsAuthorizationFilter 调用 realm 中的doGetAuthorizationInfo 方法.获取数据库正确权限.
  4. PermissionsAuthorizationFilteritem:query权限 和 从 realm 中获取的权限进行对比, 如果item:query在 realm 返回的权限列表中, 则授权通过.

注意: 如果授权失败会跳转到refuse.jsp页面.

    <!-- 通过unauthorizedUrl指定没有权限操作时跳转页面-->
    <property name="unauthorizedUrl" value="/refuse.jsp" />

问题总结

  1. 在 spring-shiro.xml 中配置过滤器链接, 需要将全部 URL 和权限对应起来进行配置, 比较麻烦.
  2. 每次授权都需要调用 realm 查询数据, 对系统性能有很大影响, 可以通过 shiro 缓存来解决.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容