`
LucienW
  • 浏览: 7372 次
社区版块
存档分类
最新评论

shiro开启注解配置后@RequiresRole无效或导致@Autowired 失效

阅读更多

在使用shiro时,打算启用shiro的注解功能如下:

@RequestMapping(method = RequestMethod.GET,value = "/menuManager")
@RequiresPermissions("sys:menu:*")
public String  menusManager(Model model){ 
	return "/sys/menuManager";
}

 

于是在配置中加入shiro注解的配置

 

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>  
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor" >
     <property name="securityManager" ref="securityManager"/>
</bean>

 启动时会报错 java.lang.IllegalArgumentException: Can not set  *.Service field *.Controller.Service to $Proxy47,研究后发现只要把配置改成

 

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
    <property name="proxyTargetClass" value="true" /> 
</bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor" >
    <property name="securityManager" ref="securityManager"/>
</bean>

 就不会再报错了,但是启动项目在测试中发现@RequiresRole  @RequiresPermissions 这些注解并没有实际的拦截,不管有没有权限都一样可以通过请求。

后来把上面配置中的Aop代理配置改成

 

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

 

 然后shiro注解正常生效了。具体原因待研究。

 

分享到:
评论

相关推荐

    Spring Boot 自定义 Shiro 过滤器无法使用 @Autowired问题及解决方法

    Spring Boot 自定义 Shiro 过滤器无法使用 @Autowired 问题及解决方法 在 Spring Boot 中集成 Shiro 并使用 JWT 进行接口认证时,可能会遇到自定义 Shiro 过滤器无法使用 @Autowired 问题。下面将详细介绍该问题及...

    SpringBoot 、Shiro、 自定义注解权限控制源码下载

    3. **Shiro的集成**:研究如何在SpringBoot应用中配置Shiro,包括安全配置、 Realm(认证和授权信息提供者)的实现以及自定义注解的编写和使用。 4. **Shiro的权限控制**:掌握如何使用Shiro的注解进行权限判断,如@...

    SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题

    通常,Shiro的初始化过程是在Spring容器启动后进行的,但是如果我们直接在配置类中使用`new`关键字创建`MyRealm`实例,那么这个实例就会独立于Spring容器,自然无法利用`@Autowired`注入Service。为了解决这个问题,...

    跟我学Shiro第12章Demo(仅JAVA SE+Web+Shiro权限注解)

    3. Servlet容器集成:如Jetty,通过配置Jetty的web.xml或启动参数,将Shiro Filter添加到Servlet容器中。 六、MavenTest12项目解析 这个项目是一个Maven工程,包含Java SE和Web部分。你将看到如何在Maven的pom.xml...

    shiro 注解不起作用

    4. **注解扫描**:Shiro默认不会扫描所有的类和方法,你需要在配置中明确指定哪些包下的类需要扫描Shiro注解。 5. **日志排查**:开启Shiro的日志,查看是否有错误信息或者警告信息,这可以帮助你定位问题所在。 6...

    Shiro元数据配置

    在 Shiro 中,元数据配置是一种灵活的方式,用于定义访问控制策略。下面将详细解释 Shiro 元数据权限设置中的相关注解及其使用场景。 1. @RequiresAuthentication 这个注解用于确保在访问或调用某个类、实例或方法...

    Spring配置shiro时自定义Realm中属性无法使用注解注入的解决办法

    然而,在实际操作中,可能会遇到一个问题:当我们在自定义的Realm类中使用注解(@Autowired)尝试注入Spring管理的Bean时,这些属性并未被正确注入。本文将详细介绍这个问题的原因及解决方法。 首先,我们需要理解...

    Shiro与SSM整合(内含详细文档介绍)

    4. **编写控制器**:在Spring MVC的控制器中,可以使用Shiro的注解如`@RequiresAuthentication`、`@RequiresPermissions`等,来控制访问权限。 5. **会话管理**:Shiro提供了一套完整的会话管理机制,可以配置会话...

    跟我学Shiro第12章Demo(仅JAVA SE+Web+Shiro权限注解)2

    首先,配置Shiro的Web过滤器,然后在Spring MVC或类似的框架中,使用Shiro的注解来控制访问。例如,可以创建一个控制器,其中的某个方法使用`@RequiresPermissions("user:create")`注解,表示只有具备"创建用户"权限...

    shiro和spring整合,使用权限注解

    # Shiro与Spring整合:利用权限注解实现精细化控制 Shiro和Spring的整合是企业级应用中常见的安全框架组合,它们共同构建了一个强大的权限管理解决方案。本文将深入探讨如何在Spring AOP(面向切面编程)环境中集成...

    shiro注解版

    这是一个shiro的入门Demo.. 使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加...

    springboot+mybatis+layui+shiro 权限注解-后台的完整的项目整合

    2. **src/main/resources**:配置文件如application.properties,MyBatis的Mapper XML文件,以及Shiro的配置文件(shiro.ini或shiro.xml)。 3. **webapp/WEB-INF/views**:存放Layui的HTML模板文件,这些文件将与...

    shiro和guice整合,使用权限注解

    在整合 Shiro 和 Guice 的过程中,首先需要创建一个 Guice 模块,配置 Shiro 的 Realm 以获取用户的认证和授权信息。Realm 可以连接到数据库或其他数据源,解析用户的凭证,并确定用户的角色和权限。接着,我们需要...

    ssm+shiro整合

    同时,通过`@Autowired`注解将Shiro的SecurityManager注入到Spring中,确保Shiro能在Spring的管理下运行。 5. **编写业务逻辑**:创建实体类、Mapper接口和对应的XML文件,定义SQL语句。编写Service层和Controller...

    SpringBoot + Shiro实现前后端全分离接口安全框架

    如果令牌无效或过期,Shiro将阻止请求并返回相应的错误信息。 5. **授权策略**:Shiro支持基于角色的访问控制(RBAC),可以根据角色分配不同的权限。在Controller层,可以使用Shiro注解`@RequiresPermissions`和`@...

    SpringBoot 集成 Shiro 实现动态uri权限

    1. **配置Shiro**: 在SpringBoot项目中引入Shiro依赖,并配置Shiro的Realm,用于处理认证和授权。 Realm是Shiro与应用程序的特定安全存储(如数据库)的桥梁。 2. **定义权限模型**: 设计权限、角色和用户的模型,...

    springboot2.0整合Shiro

    综上所述,SpringBoot 2.0 整合 Shiro 主要涉及以下几个步骤:添加Shiro依赖、配置Shiro主配置类、创建自定义Realm、处理用户、权限和角色的关系,以及使用Shiro注解进行权限控制。通过这样的集成,我们可以构建出一...

    shiro和web项目整合代码下载

    "permission_shiro"这个文件名可能包含的是与权限相关的Shiro配置或示例代码。权限管理是Shiro的重要部分,它允许我们基于角色和资源进行细粒度的权限控制。在Shiro中,你可以为每个资源分配一个或多个权限,然后在 ...

    Shiro原理+配置

    但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着"当前跟软件交互的东西"。但考虑到大多数目的和用途,你可以把它认为是Shiro的"用户...

    基于Shiro 拦截URL,实现权限控制

    1. **配置Shiro**:在Spring或者其他的配置文件中,你需要声明并配置Shiro的相关过滤器,如`authc`(用于身份验证)、`perms`(基于权限的拦截)和`roles`(基于角色的拦截)。 2. **定义角色和权限**:在提供的`...

Global site tag (gtag.js) - Google Analytics