首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

@RequiresRoles注解在shiro中不起作用

@RequiresRoles注解是Apache Shiro框架中的一个注解,用于限制用户必须具备特定角色才能访问被注解的方法或类。它可以应用于Controller层的方法或类上,用于控制用户访问权限。

在Shiro中,@RequiresRoles注解的作用是进行角色授权验证。当一个方法或类被该注解修饰时,Shiro会检查当前用户是否具备指定的角色,如果不具备则会抛出UnauthorizedException异常,从而阻止用户访问该方法或类。

使用@RequiresRoles注解需要先配置Shiro的角色认证和授权功能。具体步骤如下:

  1. 在Shiro的配置文件中配置Realm,用于进行用户认证和授权。Realm是Shiro与应用程序之间的桥梁,负责从应用程序中获取用户信息和权限信息。
  2. 在Realm中实现doGetAuthorizationInfo方法,该方法用于获取用户的角色和权限信息,并将其返回给Shiro进行授权验证。
  3. 在需要进行角色授权验证的方法或类上添加@RequiresRoles注解,并指定需要的角色。

示例代码如下:

代码语言:java
复制
// 在Shiro的配置文件中配置Realm
@Bean
public Realm realm() {
    CustomRealm realm = new CustomRealm();
    realm.setCredentialsMatcher(hashedCredentialsMatcher());
    return realm;
}

// CustomRealm.java
public class CustomRealm extends AuthorizingRealm {

    // 用户认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        // 实现用户认证逻辑
    }

    // 用户授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        // 实现用户授权逻辑,获取用户的角色和权限信息
    }
}

// 在需要进行角色授权验证的方法或类上添加@RequiresRoles注解
@Controller
public class UserController {

    @RequiresRoles("admin")
    @RequestMapping("/admin")
    public String adminPage() {
        // 需要admin角色才能访问的方法
    }
}

在上述示例中,@RequiresRoles注解被应用于adminPage()方法上,表示只有具备"admin"角色的用户才能访问该方法。

腾讯云提供了一系列与云计算相关的产品,其中包括身份与访问管理(CAM)、云服务器(CVM)、云数据库(CDB)、云存储(COS)等。这些产品可以帮助用户构建稳定、安全、高效的云计算环境。

更多关于腾讯云产品的介绍和详细信息,请参考腾讯云官方网站:腾讯云

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Shiro 集成 Spring 之注解

好在 Shiro 提供了相应的注解用于权限控制,此处使用了 Spring MVC 来测试Shiro注解,当然 Shiro 注解不仅仅可以 web 环境使用,独立的JavaSE 也是可以用的,此处只是以...开启注解配置 首先我们需要在 Spring Web 的配置文件 spring-web.xml 中加入以下内容来开启 Shiro注解支持 : <aop:config proxy-target-class...public class AuthorizationController { @RequestMapping("/role1") @RequiresRoles("user")...当然不止有 @RequiresRoles 用来验证角色,Shiro 还提供了以下注解: @RequiresAuthentication 验证用户是否登陆,等同于方法 subject.isAuthenticated...小结 我们可以通过注解配置来更方便的实现权限配置,且这些方法不仅可以配置 Controller 层,还可以 Service 层,DAO 层等,只不过需要通过 IOC 容器来获取对象才能使用。

90211

Springboot整合Shiro之授权

一、注解的使用方式 1.配置类修改   权限校验的时候,我们一般控制通过注解来实现权限的校验,但我们需要放开注解的使用,配置文件的使用方式如下: ?...对应的配置类的设置如下: /** * 开启授权注解使用方式 * @param manager * @return */ @Bean public AuthorizationAttributeSourceAdvisor...5.自定义异常类 当没有访问权限时,我们是直接通过系统error页面来提示的,我们可以通过自定义的异常页面来提示,用户体验会更好些,之前配置文件的配置方式是: ? 那么对于的java配置类。...二、Shiro标签的使用   除了通过注解来验证权限,我们页面对权限校验的时候通过shiro标签库会更方便些,所以我们来看下SpringBoot结合Thymeleaf来使用shiro标签库要怎么使用...模板使用shiro标签 @Bean public ShiroDialect shiroDialect() { return new ShiroDialect(); } 3.页面配置及使用 我们需要在页面头部引入此

39820

Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十四):权限控制(Shiro 注解

RequiresAuthentication 使用该注解标注的类,实例,方法访问或调用时,当前Subject必须在当前session已经过认证。...RequiresGuest 使用该注解标注的类,实例,方法访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者原先的session存在记录。...注解优先级 Shiro的认证注解处理具有内定处理顺序,如有多个注解,会按照下面优先级逐个检查,只有所有检查通过才允许访问: RequiresRoles  RequiresPermissions  RequiresAuthentication...的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证 * 配置以下两个bean(DefaultAdvisorAutoProxyCreator...AopAllianceAnnotationsAuthorizingMethodInterceptor ,我们看到了关联了五种权限控制注解对象的拦截器,这样添加了权限注解的方法被调用时,就会被对应的拦截器拦截

1.9K10

SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录

可以用代码或者注解来控制权限,通常我们使用注解控制,不仅简单方便,而且更加灵活.Shiro注解一共有五个: 注解名称 说明 RequiresAuthentication 使用该注解标注的类,方法等访问时...RequiresGuest 使用该注解标注的类,方法等访问时,当前Subject可以是“gust”身份,不需要经过认证或者原先的session存在记录....一般情况下我们项目中做权限控制,使用最多的是RequiresPermissions和RequiresRoles,允许存在多个角色和权限,默认逻辑是AND,也就是同时拥有这些才可以访问方法,可以注解以参数的形式设置成...(value={"sys:user:info","sys:role:info"},logical = Logical.AND) 使用顺序:Shiro注解是存在顺序的,当多个注解一个方法上的时候,...ADMIN这个号现在没有sys:info:all这个权限的,所以无法访问getInfoAll接口,我们要动态分配权限后,要清掉缓存,访问接口时候,Shiro会去重新执行授权方法,之后再次把权限和角色数据放入缓存

89220

Shiro高级及与项目的认证授权(四)

1.5.2 基于注解的授权 (1)RequiresPermissions 配置到方法上,表明执行此方法必须具有指定的权限 //查询 @RequiresPermissions(value = "...//查询 @RequiresRoles(value = "系统管理员") public String find() { return "查询用户成功"; }...基于注解的配置方式进行授权,一旦操作用户不具备操作权限,目标方法不会被执行,而且会抛出AuthorizationException 异常。...所以需要做好统一异常处理完成未授权处理 2 Shiro的会话管理 shiro里所有的用户的会话信息都会由Shiro来进行控制,shiro提供的会话可以用于JavaSE/JavaEE环境,不依赖于任何底层容器...web程序,通过shiro的Subject.login()方法登录成功后,用户的认证信息实际上是保存在HttpSession的通过如下代码验证。

15560

Shiro框架学习,Shiro与Spring集成

LifecycleBeanPostProcessor用于实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调,实现了Destroyable接口的Shiro...Shiro权限注解 Shiro提供了相应的注解用于权限控制,如果使用这些注解就需要使用AOP的功能来进行判断,如Spring AOP;Shiro提供了Spring AOP集成用于权限注解的解析和验证。...为了测试,此处使用了Spring MVC来测试Shiro注解,当然Shiro注解不仅仅可以web环境使用,独立的JavaSE也是可以用的,此处只是以web为例了。...spring-mvc.xml配置文件添加Shiro Spring AOP权限注解的支持: Java代码 ?...接着就可以相应的控制器(AnnotationController)中使用如下方式进行注解: Java代码 ?

62530

SpringBoot 整合 Shiro 实现动态权限加载更新+Session 共享+单点登录

虽然 Shiro 没有 SpringSecurity 功能更丰富,但是它轻量,简单,项目中通常业务需求 Shiro 也都能胜任....可以用代码或者注解来控制权限,通常我们使用注解控制,不仅简单方便,而且更加灵活.Shiro 注解一共有五个: 一般情况下我们项目中做权限控制,使用最多的是 RequiresPermissions 和...RequiresRoles,允许存在多个角色和权限,默认逻辑是 AND,也就是同时拥有这些才可以访问方法,可以注解以参数的形式设置成 OR 示例 //拥有一个角色就可以访问 @RequiresRoles...注解是存在顺序的,当多个注解一个方法上的时候,会逐个检查,知道全部通过为止,默认拦截顺序是:RequiresRoles->RequiresPermissions->RequiresAuthentication...ADMIN 这个号现在没有 sys:info:all 这个权限的,所以无法访问 getInfoAll 接口,我们要动态分配权限后,要清掉缓存,访问接口时候,Shiro 会去重新执行授权方法,之后再次把权限和角色数据放入缓存

1.2K20

SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录

一.说明 Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shiro没有SpringSecurity功能更丰富,但是它轻量,简单,项目中通常业务需求Shiro也都能胜任...可以用代码或者注解来控制权限,通常我们使用注解控制,不仅简单方便,而且更加灵活.Shiro注解一共有五个: ?...一般情况下我们项目中做权限控制,使用最多的是RequiresPermissions和RequiresRoles,允许存在多个角色和权限,默认逻辑是AND,也就是同时拥有这些才可以访问方法,可以注解以参数的形式设置成...使用顺序:Shiro注解是存在顺序的,当多个注解一个方法上的时候,会逐个检查,知道全部通过为止,默认拦截顺序是:RequiresRoles->RequiresPermissions->RequiresAuthentication...ADMIN这个号现在没有sys:info:all这个权限的,所以无法访问getInfoAll接口,我们要动态分配权限后,要清掉缓存,访问接口时候,Shiro会去重新执行授权方法,之后再次把权限和角色数据放入缓存

58020

基于springboot注解shiro 授权及角色认证

Shiro也提供了方便的工具进行判 断。 这个工具就是Realm的doGetAuthorizationInfo方法进行判断。...触发权限判断的有两种 方式 (1) 页面通过shiro:****属性判断 (2) 接口服务通过注解@Requires****进行判断 后端接口服务注解 通过给接口服务方法添加注解可以实现权限校验...subject.isRemembered()为true (3)@RequiresGuest 验证是否是一个guest的请求,是否是游客的请求 此时subject.getPrincipal()为null (4)@RequiresRoles...例如: @RequiresRoles(“aRoleName”) void someMethod(); 只有subject有aRoleName角色才能访问方法someMethod() (5)@RequiresPermissions...  //登录认证验证角色 @RequiresRoles("admin") @GetMapping("userLoginRoles") @ResponseBody public String userLoginRoles

29120

十分钟带你轻松入门Shiro

启用 IOC 容器中使用 shiro注解....该方法对数据作进一步的校验 密码校验的过程 刚才的例子,我们实现了在用户登录前后对页面权限的控制,事实上,程序我们并没有去编写密码比对的代码,而登录逻辑显然对密码进行了校验,可以猜想这一定是...我们UserNamePasswordToken类的getPassword()方法打一个断点: 此时以debug的方式启动项目,表单输入用户名和密码,点击登录,程序就可以该方法处暂停运行...({"aaa"}) public void test(){ System.out.println("test..."); } } test()方法上添加注解@RequiresRoles...({"aaa"}) public void test(){ System.out.println("test..."); } } test()方法上添加注解@RequiresRoles

43030

一起来学SpringBoot | 第二十六篇:轻松搞定安全框架(Shiro

当对用户执行认证(登录)和授权(访问控制)验证时,Shiro 会从应用配置的 Realm 查找用户及其权限信息。 本章目标 利用 SpringBoot 与 Shiro 实现安全认证和授权.......支持 EhCache、 Redis 等常规缓存,这里为了简单起见就用 EhCache 了 , resources 目录下创建一个 ehcache-shiro.xml 文件 <?...ShiroConfiguration 的 shiroFilter 处配置了 /hello=anon,意味着可以不需要认证也可以访问,那么除了这种方式外 Shiro 还为我们提供了一些注解相关的方式.....先登录,由于 u3 DBCache 拥有的角色是 test,只有 user:list 这一个权限 ? 访问 /users/query 成功,因为我们符合响应的角色/权限 ?...细心的朋友肯定会发现 ShiroConfiguration 写了一句 permissions.put("/users/find", "perms[user:find]"); 意味着我们不仅可以通过注解方式

1.5K30
领券