1.2、方法上使用的注解:
@RequiresRole(“”)// 表示访问当前方法需要哪些角色,等同于subject.hasRole()或者subject.hasAllRoles
@RequiresPermissions(“”)//表示访问当前方法需要哪些权限,等同于subject.isPermitted()或者subject.isPermittedAll
@RequiresAuthentication //验证用户是否登录,等同于subject.isAuthenticated();
@RequiresUser //验证用户是否已登录或者已记忆,等同于subject.isAuthenticated();或者subject.isRemembered();
@RequiresGuest //验证是否是一个guest请求,与@RequiresUser完全相反,即 @RequiresGuest== ! @RequiresUser
1.3、开启注解:
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreateor" depends-on="lifecycleBeanPostProcessor"
</bean>
<bean class="org.apache.shrio.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"/>
</bean>
1.4、对于新增快递员的权限控制
@RequiresPermissions("corier_add")
public void save(Couriser couriser){couris}
5、测试发现权限控制没有生效
原因:收到@Transactional注解的影响,权限代理设置为JDK代理时,会针对接口代理,但是父类、父接口中找不到@RequiresPermissions 注解
我们的解决办法就是把代理的方式设置成cglib