使用前请先开启Shiro的controller层注解,若是已经设置请下滑绕过spring
要在spring-mvc.xml中写。apache
<!--下面的用于开启shiro的权限注解--> <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>
若是在是springboot中spring-mvc
/** * 下面2个支持controller层注解实现权限控制 * * @return */ @Bean(name = "advisorAutoProxyCreator") public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); advisorAutoProxyCreator.setProxyTargetClass(true); return advisorAutoProxyCreator; } @Bean(name = "authorizationAttributeSourceAdvisor") public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(@Qualifier("securityManager") SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); return authorizationAttributeSourceAdvisor; }
———————————————————进入正题———————————————————————springboot
@RequiresAuthenticationmvc
验证用户是否登陆,等同于方法subject.isAuthenticated() 结果为true时。ui
@RequiresUserspa
验证用户是否被记忆,user有两种含义:.net
一种是成功登陆的(subject.isAuthenticated() 结果为true);code
另一种是被记忆的(subject.isRemembered()结果为true)。xml
@RequiresGuest
验证是不是一个guest的请求,与@RequiresUser彻底相反。
换言之,RequiresUser == !RequiresGuest。
此时subject.getPrincipal() 结果为null.
@RequiresRoles
例如:@RequiresRoles("aRoleName");
void someMethod();
若是subject中有aRoleName角色才能够访问方法someMethod。若是没有这个权限则会抛出异常AuthorizationException。
@RequiresPermissions
例如: @RequiresPermissions({"file:read", "write:aFile.txt"} )
void someMethod();
要求subject中必须同时含有file:read和write:aFile.txt的权限才能执行方法someMethod()。不然抛出异常AuthorizationException。--------------------- 原文:https://blog.csdn.net/anmoyyh/article/details/74742772