shiro权限注解

关于shiro授权 This subject is anonymous - it does not have any identifying principals and authorization 在进行shiro前后分离授权时,报错如下。 This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against. A Subject instance will acquire these identifying principals automatically after a successful 阅读详情

一、注解解释

@RequiresAuthentication

表示subject已经通过登录验证,才可使用

@RequiresUser

表示subject已经身份验证或者通过记住我登录,才可使用

@RequiresGuest

表示subject没有身份验证或通过记住我登录过,即是游客身份,才可使用

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

表示subject需要xx(value)角色,才可使用

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

表示subject需要xxx(value)权限,才可使用

二、示例

1、代码

注:连接均是可被匿名访问,控制器均是直接调用服务方法

服务

@Service
public class ShiroService {

    /**
     * 表示subject已经通过登录验证
     */
    @RequiresAuthentication
    public void testRequiresAuthentication(){
        System.out.println("testRequiresAuthentication");
    }
    /**
     * 表示subject已经身份验证或者通过记住我登录
     */
    @RequiresUser
    public void testRequiresUser(){
        System.out.println("testRequiresUser");
    }
    /**
     * 表示subject没有身份验证或通过记住我登录过,即是游客身份
     */
    @RequiresGuest
    public void testRequiresGuest(){
        System.out.println("testRequiresGuest");
    }
    /**
     * 表示subject需要admin角色
     */
    @RequiresRoles(value = {"admin"},logical = Logical.AND)
    public void testRequiresRoles(){
        System.out.println("testRequiresRoles");
    }
    /**
     * 表示subject需要权限user:create
     */
    @RequiresPermissions(value = {"user:create"},logical = Logical.AND)
    public void testRequiresPermissions(){
        System.out.println("testRequiresPermissions");
    }
}

2、不同情况下访问效果

1)未登录状态下访问

testRequiresAuthentication
异常

org.apache.shiro.authz.UnauthenticatedException: The current Subject is not authenticated.  Access denied.

在这里插入图片描述

testRequiresUser
异常

org.apache.shiro.authz.UnauthenticatedException: Attempting to perform a user-only operation.  The current Subject is not a user (they haven't been authenticated or remembered from a previous login).  Access denied.

在这里插入图片描述

testRequiresGuest
通过
在这里插入图片描述

testRequiresRoles
异常

org.apache.shiro.authz.UnauthenticatedException: This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against.  A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager.  This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again.  Because an identity is currently not known due to any of these conditions, authorization is denied.

在这里插入图片描述

testRequiresPermissions
异常

org.apache.shiro.authz.UnauthenticatedException: This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against.  A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager.  This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again.  Because an identity is currently not known due to any of these conditions, authorization is denied.

在这里插入图片描述

2)登录user用户(user角色)状态下访问

testRequiresAuthentication
通过
在这里插入图片描述

testRequiresUser
通过
在这里插入图片描述

testRequiresGuest
异常

org.apache.shiro.authz.UnauthenticatedException: Attempting to perform a guest-only operation.  The current Subject is not a guest (they have been authenticated or remembered from a previous login).  Access denied.

在这里插入图片描述

testRequiresRoles
异常

org.apache.shiro.authz.UnauthorizedException: Subject does not have role [admin]

在这里插入图片描述

testRequiresPermissions
异常

org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [user:create]

在这里插入图片描述

3)登录admin用户(user、admin角色)状态下访问

testRequiresAuthentication
通过

在这里插入图片描述

testRequiresUser
通过

在这里插入图片描述

testRequiresGuest
异常

org.apache.shiro.authz.UnauthenticatedException: Attempting to perform a guest-only operation.  The current Subject is not a guest (they have been authenticated or remembered from a previous login).  Access denied.

在这里插入图片描述

testRequiresRoles
通过

在这里插入图片描述

testRequiresPermissions
异常

org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [user:create]

在这里插入图片描述

SAP S4 MM模块自动记账全流程解析:从评估范围到科目分组的实战配置 本文深入解析SAP S4 MM模块自动记账的全流程,从核心概念评估范围与评估控制入手,详细阐述了评估类、科目分组等关键配置的逻辑关系。通过实战配置步骤,指导如何建立从物料移动(如收货、发料)到自动生成准确财务凭证的完整体系,确保库存价值与总账实时同步,为企业构建可靠的财务业务一体化基石。 阅读详情

相关推荐

ArcGIS+PLUS+InVEST三件套实战:从零搞定土地利用变化与碳储量预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建土地利用变化与碳储量预测的完整研究流水线。通过多情景模拟和生态系统服务评估,提供从数据准备到结果验证的实战指南,助力研究者高效完成生态评估项目。

weixin_30399821的博客 544

Shiro(七):shiro 注解权限控制-5个权限注解

shiro提供了相应的注解用于权限控制,如果使用这些注解就需要使用aop的功能来进行判断。shiro提供了spring aop集成,用于权限注解的解析和验证 shiro注解权限控制-5个权限注解 Shiro共有5个注解,接下来我们就详细说说吧 1.@RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须通过login 进行了身份验证;即 Subject.isAuthenticated() 返回 true 2.@RequiresUser: 表

12程序猿的博客 4737

LPC546xx USB接口VBUS阈值设计:从原理到实践,解决冷启动与可靠性问题

在嵌入式USB接口设计中,VBUS信号不仅是电源线,更是设备连接检测与电源管理的核心。其电压阈值直接决定了USB物理层(PHY)能否正确识别主机并建立有效会话。理解VBUS的会话有效电压(Votg_sess_valid)与PHY有效电压(VBUS_valid)等关键参数,是确保接口稳定性的基础。这些参数影响着设备枚举的成功率、通信稳定性以及长期可靠性。在工程实践中,尤其是对于集成PHY的微控制器如NPC LPC546xx系列,VBUS的连接方案(直接连接或通过稳压器)需要根据设备供电模式(自供电/总线供电)

weixin_30915275的博客 402

@RequiresGuest,@RequiresUser,@RequiresAuthentication等详解 第二章

@Controller,@RequiresGuest,@RequiresUser等详解 第二章@RequiresAuthentication@RequiresUser@RequiresGuest@RequiresRoles@Validated@PathVariable @RequiresAuthentication 验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。 用注解@RequiresAuthentication去实现 如果用户没登陆系统,系统给出的是

weixin_43390321的博客 2257

华为昇腾Atlas 200I DK A2实战:从开箱到运行首个AI应用

本文详细介绍了华为昇腾Atlas 200I DK A2开发板从开箱到运行首个AI应用的全过程。包括硬件准备、系统烧录、开发板连接方案、AI应用运行及性能优化技巧,帮助开发者快速上手部署AI项目,提升开发效率。

weixin_27038245的博客 593

MDK5 Debug调试方法总结

MDK5 Debug调试方法总结

m0_70748084的博客 2万+

使用RequiresAuthentication注解介绍、应用场景和示例代码

注解指示方法或者类需要用户进行认证(即登录),否则访问将被拒绝。它通常与 Shiro 的安全管理结合使用,确保用户必须通过身份验证才能访问被注解的代码块。

a_beiyo的博客 816

Calibre提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文详细解析了Calibre提参过程中hcell和xcell文件的应用技巧,帮助工程师精准屏蔽模块以优化寄生参数提取。通过对比hcell与xcell的核心差异、图形界面与命令行操作指南,以及常见问题排查方法,提升芯片后端设计效率。附避坑指南,解决EETOP论坛热议的模块丢失问题。

weixin_26795617的博客 440

Shiro框架通过注解@RequiresAuthentication方式校验权限

在项目的校验与授权中,我们常使用Shiro框架来完成,在校验阶段,我们可以使用Shiro自带的拦截器来实现拦截功能,本来我写的 filterMap.put(“/**”, “jwt”)来完成拦截,但是这样在没有登录过的页面去注册就会拦截注册请求,但是我没有在注册请求前面加@RequiresAuthentication注解,所以通过改进后实现了常规的拦截功能。 这样在注册请求的url上加上自定义字符就可以直接通行,登录后的方法加上一个全局url路径设置就可以达到部分功能必须要登录才可以实现。 ...

m0_67402588的博客 673

ArcGISPro小白必看:5分钟搞定3D地形图制作(附免费数据源)

本文为ArcGISPro初学者提供5步制作专业3D地形图的完整指南,涵盖免费数据获取、项目初始化、数据预处理、3D场景构建和成果输出等关键步骤。特别推荐使用NASA的SRTM高程数据和吉林一号卫星影像,帮助用户快速掌握3D地形图制作技巧,适用于教学演示和科研分析。

weixin_28314575的博客 242

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran‘s I,LISA聚类地图,显著性地图

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran's I,单变量莫兰指数,双变量莫兰指数计算,LISA聚类地图,显著性地图,Geoda双变量莫兰指数是一种强大的地理空间数据分析工具。

智慧空间实验室 6052

shiro注解权限控制-5个权限注解

shiro注解权限控制-5个权限注解Shiro共有5个注解,接下来我们就详细说说吧 RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。RequiresGuest: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的session中

头发没掉完,就得接着干! 5万+

读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析

摘要:SAP Fiori架构并非简单的系统连接图,而是明确区分界面层与业务数据层的三层分工体系:用户交互层(浏览器与Fiori launchpad)、前端技术层(SAPUI5运行环境)和业务数据层(SAP S/4HANA后端)。这种分离实现了生命周期解耦,前端专注于统一体验治理,后端处理核心业务逻辑。值得注意的是,SAP Fiori front-end server本质仍是ABAP系统,负责UI技术组件运行。虽然SAP S/4HANA推荐嵌入式部署,但独立部署在多系统场景中仍有价值。典型Fiori应用通过O

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 180

Shiro权限控制(三):Shiro注解权限验证

一、目标 通过注解方式实现URL的权限验证 二、前言 在前面的一篇博文中《Shiro权限控制之自定义Filter(二)》,我们的权限验证是配置在shiro配置文件中的,即在spring-shiro-web.xml中的ShiroFilterFactoryBean的filterChainDefinitions属性中,如下 <!-- Shiro的web过滤器 --> <...

kity9420的专栏 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Shiro权限注解

权限注解 @RequiresAuthentication:表示当前Subject已经通过login 进行了身份验证;即 Subject. isAuthenticated() 返回 true @RequiresUser:表示当前 Subject 已经身份验证或者通过记 住我登录的。 @RequiresGuest:表示当前Subject没有身份验证或通过记住 我登录过,即是游客身份。 @Re...

Hern(宋兆恒) 636

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

shiro授权 . 配置注解权限验证

授权 1.添加角色和权限的授权方法   //根据username查询该用户的所有角色,用于角色验证 Set&lt;String&gt; queryRoleByName(String username);   //根据username查询他所拥有的权限信息,用于权限判断 Set&lt;String&gt; queryPersByName(String username);   2...

Soul717的博客 1898

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Shiro权限注解原理

概述 前不久刚学会使用权限注解(),开始思索了一番。最开始猜测实现方式是注解@Aspect,具体实现方式类似如下所示(切面记录审计日志)。后来发现并非如此,所以特地分析一下源码。 @Component @Aspect public class AuditLogAspectConfig { @Pointcut("@annotation(com.ygsoft.ecp.mapp.bas...

dipiao2231的博客 677

Shiro - 实现基于注解的 Shiro 权限控制

Shiro 基于注解的权限控制实现 本文介绍了在 Spring Boot 项目中实现基于 Shiro 注解的权限控制方案。主要内容包括: 核心概念回顾:讲解了 Shiro 的核心组件(Subject、SecurityManager、Realm 等)及其协作机制。 环境搭建: 添加 Shiro 和 Spring Boot Web 依赖 配置 Shiro 核心组件(SecurityManager、Realm) 启用 Shiro 注解支持 权限控制实现: 使用 @RequiresRoles 进行角色验证 使用 @

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

关于shiro的5个权限注解

shiro注解权限控制-5个权限注解 Shiro共有5个注解,接下来我们就详细说说吧 RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。 RequiresGuest: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的sessi...

ztl_258的博客 203

Shiro--权限标签、权限注解

Shiro权限标签 在使用Shiro标签库前,首先需要在JSP引入shiro标签: <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> <shiro:authenticated/> 登录之后 <shiro:notAuthenticated/> 不在登录状态时 <shir...

吴声子夜歌的博客 532

Shiro 权限注解

Shiro 权限注解 Shiro 提供了相应的注解用于权限控制,如果使用这些注解就需要使用 AOP 的功能来进行判断,如 Spring AOP;Shiro 提供了 Spring AOP 集成用于权限注解的解析和验证。 为了测试,此处使用了 Spring MVC 来测试 Shiro 注解,当然 Shiro 注解不仅仅可以在 web 环境使用,在独立的 JavaSE 中也是可以用的,此处只是以 w...

苏凯的博客 2760

Shiro-权限注解

全选的注解可以放到Controller层方法上,也可以放到Service层方法上。 常用的权限注解    示例:   在原有的基础上添加一个Service    public class ShiroService { @RequiresRoles({"admin"}) public void shiroServiceMe...

ankan7400的博客 102

Shiro 权限注解控制

1.启用注解权限 Spring配置方式一: 在spring-mvc.xml文件中注入 <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /> <bean class="org.apache.shiro.spring.secur...

myli92的博客 759

10.shiro权限注解

Shiro的注解是使用在相应的Java类的方法上,当用户不满足注解的要求时,是无法执行 方法内部逻辑的。这相当于在代码层做了权限校验。 Shiro的注解可以放置在Controller层对应的方法上,也可以放置在Service层对应的方法上。 Shiro的注解类型大致如下: (1)@RequiresAuthentication 表示当前Subject已经通过login进行了身份验证;即S...

qq_36468169的博客 299

Shiro注解权限验证方式

Shiro验证权限 shiro常用的注解验证权限方式 @RequiresAuthentication 表示当前Subject已经通过login 进行了身份验证;即Subject. isAuthenticated()返回true。 @RequiresUser 表示当前Subject已经身份验证或者通过记住我登录的。 @RequiresGuest 表示当前Subject没有身份验证或通过记住我登...

AsShadow的博客 542
上一篇: shiro常用标签在jsp中的使用笔记
下一篇: shiro初始化资源和权限
magicproblem
博客等级 码龄7年 22粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值