shiro注解
shiro注解权限控制-5个权限注解
RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。
RequiresGuest: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的session中存在记录。
RequiresPermissions: 当前Subject需要拥有某些特定的权限时,才能执行被该注解标注的方法。如果当前Subject不具有这样的权限,则方法不会被执行。
RequiresRoles: 当前Subject必须拥有所有指定的角色时,才能访问被该注解标注的方法。如果当天Subject不同时拥有所有指定角色,则方法不会执行还会抛出AuthorizationException异常。
RequiresUser 当前Subject必须是应用的用户,才能访问或调用被该注解标注的类,实例,方法。
使用方法:
Shiro的认证注解处理是有内定的处理顺序的,如果有个多个注解的话,前面的通过了会继续检查后面的,若不通过则直接返回,处理顺序依次为(与实际声明顺序无关):
RequiresRoles
RequiresPermissions
RequiresAuthentication
RequiresUser
RequiresGuest
例如:你同时声明了RequiresRoles和RequiresPermissions,那就要求拥有此角色的同时还得拥有相应的权限。
1) RequiresRoles
可以用在Controller或者方法上。可以多个roles,多个roles时默认逻辑为 AND也就是所有具备所有role才能访问。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresRoles {
String[] value();
Logical logical() default Logical.AND;
}
//属于user角色
@RequiresRoles("user") //必须同时属于user和admin角色
@RequiresRoles({"user","admin"}) //属于user或者admin之一;修改logical为OR 即可
@RequiresRoles(value={"user","admin"},logical=Logical.OR)
2) RequiresPermissions
//与 RequiresRoles类似
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresPermissions {
String[] value();
Logical logical() default Logical.AND;
}
示例
//符合index:hello权限要求
@RequiresPermissions("index:hello") //必须同时复核index:hello和index:world权限要求
@RequiresPermissions({"index:hello","index:world"}) //符合index:hello或index:world权限要求即可
@RequiresPermissions(value={"index:hello","index:world"},logical=Logical.OR)
3) RequiresAuthentication,RequiresUser,RequiresGuest
这三个的使用方法一样
@RequiresAuthentication
@RequiresUser
@RequiresGusst
原文:https://blog.csdn.net/w_stronger/article/details/73109248
shiro注解的更多相关文章
- Spring Boot + Spring Cloud 实现权限管理系统 权限控制(Shiro 注解)
技术背景 当前,我们基于导航菜单的显示和操作按钮的禁用状态,实现了页面可见性和操作可用性的权限验证,或者叫访问控制.但这仅限于页面的显示和操作,我们的后台接口还是没有进行权限的验证,只要知道了后台的接 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十四):权限控制(Shiro 注解)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 当前,我们基于导航菜单的显示和操作按钮的禁用状态,实现了页面可见性和 ...
- shiro + struts2 在action 中使用 shiro 注解 @requiresPermissions 报错: 方法找不到,类初始失败
06:36:34,405 ERROR http-8084-2 dispatcher.Dispatcher:38 - Exception occurred during processing reque ...
- SpringBoot 中使用shiro注解使之生效
在shiroConfig配置类中增加如下代码: /** * 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro ...
- shiro注解权限拦截失效解决
今天在给项目添加注解拦截的时候,总是发现拦截不起作用,加入了这个注解按照角色来进行拦截.角色不是1的用户访问此方法都会被拦截. 测试了一会发现把注解bean配置到了shiro.xml中没有起作用.需要 ...
- 解决Shiro注解无效的问题
当Shiro集成到Spring mvc中,却发现shiro的权限注解不起作用,官方的配置是要支持注解,只需要将以下代码加到spring 配置文件中即可: <bean class="or ...
- shiro注解和标签
Controller中注解: @RequiresAuthentication @RequiresGuest @RequiresPermissions("account:create" ...
- JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题
项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的 ...
- shiro注解,初始化资源和权限,会话管理
有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容 注解: 新建一个类: 此时需要有admin的权限才可以执行下面的代码 public class ShiroS ...
随机推荐
- Python输入数组(一维数组、二维数组)
一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空 ...
- C语言:递归函数n!
#include <stdio.h> long recursion(int n); void main(){ int n; long result; printf("input ...
- 基于uniGui开发的Delphi后台管理框架uniFramework
uniGui是基于Delphi的一套开发Web应用的UI框架,前端使用的是ExtJS,最新版的uniGUI1.5 1480已支持新版的ExtJS6.5.3.我认为uniGUI是目前Delphi下最完善 ...
- P2886 [USACO07NOV]牛继电器Cow Relays
题目描述 For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race ...
- python并发_线程
关于进程的复习: # 管道 # 数据的共享 Manager dict list # 进程池 # cpu个数+1 # ret = map(func,iterable) # 异步 自带close和join ...
- zookeeper分布式服务中选主的应用
通常zookeeper在分布式服务中作为注册中心,实际上它还可以办到很多事.比如分布式队列.分布式锁 由于公司服务中有很多定时任务,而这些定时任务由于一些历史原因暂时不能改造成框架调用 于是想到用zo ...
- Python05(运算符)
Trainning-day04回顾1.Python运算符 + - * / % ** //2.标准输入函数 input() input("输入提示语")3.占位符 生成一定格式的字符 ...
- openmv扫码通信
import sensor, image, time import json from pyb import UART sensor.reset() # 初始化相机传感器 sensor.set_pix ...
- 利用隐藏 iframe 下载文件
在开发项目中遇到问题:下载文件后台报错,下载文件的页面会出现空白或异常信息,需要解决. 解决方法:利用隐藏iframe下载文件 3:对于a标签,采用target属性方法 <a target=&q ...
- js图片库
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...