在使用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 并使用 JWT 进行接口认证时,可能会遇到自定义 Shiro 过滤器无法使用 @Autowired 问题。下面将详细介绍该问题及...
3. **Shiro的集成**:研究如何在SpringBoot应用中配置Shiro,包括安全配置、 Realm(认证和授权信息提供者)的实现以及自定义注解的编写和使用。 4. **Shiro的权限控制**:掌握如何使用Shiro的注解进行权限判断,如@...
通常,Shiro的初始化过程是在Spring容器启动后进行的,但是如果我们直接在配置类中使用`new`关键字创建`MyRealm`实例,那么这个实例就会独立于Spring容器,自然无法利用`@Autowired`注入Service。为了解决这个问题,...
3. Servlet容器集成:如Jetty,通过配置Jetty的web.xml或启动参数,将Shiro Filter添加到Servlet容器中。 六、MavenTest12项目解析 这个项目是一个Maven工程,包含Java SE和Web部分。你将看到如何在Maven的pom.xml...
4. **注解扫描**:Shiro默认不会扫描所有的类和方法,你需要在配置中明确指定哪些包下的类需要扫描Shiro注解。 5. **日志排查**:开启Shiro的日志,查看是否有错误信息或者警告信息,这可以帮助你定位问题所在。 6...
在 Shiro 中,元数据配置是一种灵活的方式,用于定义访问控制策略。下面将详细解释 Shiro 元数据权限设置中的相关注解及其使用场景。 1. @RequiresAuthentication 这个注解用于确保在访问或调用某个类、实例或方法...
然而,在实际操作中,可能会遇到一个问题:当我们在自定义的Realm类中使用注解(@Autowired)尝试注入Spring管理的Bean时,这些属性并未被正确注入。本文将详细介绍这个问题的原因及解决方法。 首先,我们需要理解...
4. **编写控制器**:在Spring MVC的控制器中,可以使用Shiro的注解如`@RequiresAuthentication`、`@RequiresPermissions`等,来控制访问权限。 5. **会话管理**:Shiro提供了一套完整的会话管理机制,可以配置会话...
首先,配置Shiro的Web过滤器,然后在Spring MVC或类似的框架中,使用Shiro的注解来控制访问。例如,可以创建一个控制器,其中的某个方法使用`@RequiresPermissions("user:create")`注解,表示只有具备"创建用户"权限...
# Shiro与Spring整合:利用权限注解实现精细化控制 Shiro和Spring的整合是企业级应用中常见的安全框架组合,它们共同构建了一个强大的权限管理解决方案。本文将深入探讨如何在Spring AOP(面向切面编程)环境中集成...
这是一个shiro的入门Demo.. 使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加...
2. **src/main/resources**:配置文件如application.properties,MyBatis的Mapper XML文件,以及Shiro的配置文件(shiro.ini或shiro.xml)。 3. **webapp/WEB-INF/views**:存放Layui的HTML模板文件,这些文件将与...
在整合 Shiro 和 Guice 的过程中,首先需要创建一个 Guice 模块,配置 Shiro 的 Realm 以获取用户的认证和授权信息。Realm 可以连接到数据库或其他数据源,解析用户的凭证,并确定用户的角色和权限。接着,我们需要...
同时,通过`@Autowired`注解将Shiro的SecurityManager注入到Spring中,确保Shiro能在Spring的管理下运行。 5. **编写业务逻辑**:创建实体类、Mapper接口和对应的XML文件,定义SQL语句。编写Service层和Controller...
如果令牌无效或过期,Shiro将阻止请求并返回相应的错误信息。 5. **授权策略**:Shiro支持基于角色的访问控制(RBAC),可以根据角色分配不同的权限。在Controller层,可以使用Shiro注解`@RequiresPermissions`和`@...
1. **配置Shiro**: 在SpringBoot项目中引入Shiro依赖,并配置Shiro的Realm,用于处理认证和授权。 Realm是Shiro与应用程序的特定安全存储(如数据库)的桥梁。 2. **定义权限模型**: 设计权限、角色和用户的模型,...
综上所述,SpringBoot 2.0 整合 Shiro 主要涉及以下几个步骤:添加Shiro依赖、配置Shiro主配置类、创建自定义Realm、处理用户、权限和角色的关系,以及使用Shiro注解进行权限控制。通过这样的集成,我们可以构建出一...
"permission_shiro"这个文件名可能包含的是与权限相关的Shiro配置或示例代码。权限管理是Shiro的重要部分,它允许我们基于角色和资源进行细粒度的权限控制。在Shiro中,你可以为每个资源分配一个或多个权限,然后在 ...
但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着"当前跟软件交互的东西"。但考虑到大多数目的和用途,你可以把它认为是Shiro的"用户...
1. **配置Shiro**:在Spring或者其他的配置文件中,你需要声明并配置Shiro的相关过滤器,如`authc`(用于身份验证)、`perms`(基于权限的拦截)和`roles`(基于角色的拦截)。 2. **定义角色和权限**:在提供的`...