Shiro 权限注解

Shiro 提供了相应的注解用于权限控制,如果使用这些注解就需要使用 AOP 的功能来进行判断,如 Spring AOP;Shiro 提供了 Spring AOP 集成用于权限注解的解析和验证。

为了测试,此处使用了 Spring MVC 来测试 Shiro 注解,当然 Shiro 注解不仅仅可以在 web 环境使用,在独立的 JavaSE 中也是可以用的,此处只是以 web 为例了。

在 spring-mvc.xml 配置文件添加 Shiro Spring AOP 权限注解的支持:

<aop:config proxy-target-class="true"></aop:config>
<bean class="
org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"><property name="securityManager" ref="securityManager"/>
</bean>&nbsp;

如上配置用于开启 Shiro Spring AOP 权限注解的支持;<aop:config proxy-target-class="true"> 表示代理类。

接着就可以在相应的控制器(AnnotationController)中使用如下方式进行注解:

@RequiresRoles("admin")
@RequestMapping("/hello2")
public String hello2() {return "success";
}&nbsp;

访问 hello2 方法的前提是当前用户有 admin 角色。

当验证失败,其会抛出 UnauthorizedException 异常,此时可以使用 Spring 的 ExceptionHandler(DefaultExceptionHandler)来进行拦截处理:

@ExceptionHandler({UnauthorizedException.class})
@ResponseStatus(HttpStatus.UNAUTHORIZED)
public ModelAndView processUnauthenticatedException(NativeWebRequest request, UnauthorizedException e) {ModelAndView mv = new ModelAndView();mv.addObject("exception", e);mv.setViewName("unauthorized");return mv;
}&nbsp;

权限注解

@RequiresAuthentication

表示当前 Subject 已经通过 login 进行了身份验证;即 Subject.isAuthenticated() 返回 true。

@RequiresUser

表示当前 Subject 已经身份验证或者通过记住我登录的。

@RequiresGuest

表示当前 Subject 没有身份验证或通过记住我登录过,即是游客身份。

@RequiresRoles(value={“admin”, “user”}, logical= Logical.AND)

表示当前 Subject 需要角色 admin 和 user。

@RequiresPermissions (value={“user:a”, “user:b”}, logical= Logical.OR)

表示当前 Subject 需要权限 user:a 或 user:b。

Shiro 权限注解相关推荐

  1. Shiro与Spring集成时,Shiro权限注解@RequiresRoles等不生效的解决方案

    2019独角兽企业重金招聘Python工程师标准>>> Shiro与Spring集成时,Shiro权限注解@RequiresRoles等不生效, 这个问题着实整了好久,网上各种解决方 ...

  2. log中文乱码 springboot_springboot + shiro 权限注解、统一异常处理、请求乱码解决

    springboot + shiro 权限注解.统一异常处理.请求乱码解决 前篇 后台权限管理系统 20200808新版本更新 版本升级及内容优化版本,改动内容: 版本更新,springboot从1. ...

  3. 【Shiro权限管理】17.Shiro权限注解

    注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上. 前面我们讲解了Shiro的标签属性,下面我们来讲解Shiro的有关权限的注解属性. Shiro的注解是使用在相应的Java类的方法上 ...

  4. springboot+shiro使用权限注解问题_无法使用注解_使用注解无法跳转无权限页面

    环境 springboot:2.5.5 shiro:1.8.0 (shiro-spring-boot-web-starter) idea 常用注解 一些小问题 1. 无法使用权限注解 实测使用shir ...

  5. Shiro权限管理详解(授权和注解开发)【面试点】

    Shiro权限管理详解 1. 权限管理 1.1什么是权限管理 1.2用户身份认证 1.2.1 概念 1.2.2 用户名密码身份认证流程 1.2.3 关键对象 1.3 授权 1.3.1 概念 1.3.2 ...

  6. activiti 工作流 springboot 后台框架平台 集成代码生成器 shiro 权限

    QQ 313596790 官网:www.fhadmin.org 下载地址 工作流模块---------------------------------------------------------- ...

  7. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在学习此小节之前您可能还需要学习: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

  8. Shiro <shiro:hasPermission >标签不生效,shiro权限不生效原因

    第一个可能配置文件:shiroConfig.java没加这个 /*** 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使 ...

  9. Apache Shiro权限控制框架简介

    Apache Shiro权限控制框架简介 要想实现权限控制,可以自己写代码实现,蓄力都的权限控制可以通过过滤器Filter实现,细粒度的权限控制是基于代理对象结合自定义的注解和反射技术来实现,反射技术 ...

最新文章

  1. 慕课python课后作业_python基础1习题练习
  2. 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决
  3. 微信小程序发送模板消息,php发送模板消息
  4. oracle数据库Sys密码策略,Oracle数据库加固之密码策略解析
  5. 各种卡的一些信息积累
  6. App Class Loader
  7. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Yiwen with Formula(任意模数FFT)
  8. pb mysql 中文乱码_解决springmvc+mybatis+mysql中文乱码问题
  9. 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性)
  10. docbook_DocBook简介,一种值得学习的灵活标记语言
  11. Docker学习总结(52)—— Docker容器环境变量相关知识点的总结
  12. java多线程采集+线程同步-【多线程数据采集之四】
  13. Android网络框架技术
  14. doubango TURN Data Indication报文代码
  15. Eclipse SVN图标等设置
  16. Python 编码错误的本质原因
  17. 云数据时代的协作办公,超级表格强力出击!
  18. Victor Zue教授的创新观
  19. zookeeper自问自答
  20. message的警告弹窗放在最上层

热门文章

  1. C#使用NLOG System.TypeInitializationException,类型初始值设定项引发异常
  2. 关于数据库的一些基本操作语句
  3. 【B/S】java(4)
  4. 图片上传预览 (URL.createObjectURL)
  5. mysql 表中中文不显示
  6. C# 代码生成器 (存储过程生成方法)
  7. 转载:8个让程序员追悔莫及的职业建议
  8. Ubuntu在系统栏 给应用程序添加提示图标
  9. jquery.lazyload 插件实现图片延迟加载
  10. 手动配置泛域名https (资源)