码迷,mamicode.com
首页 > 其他好文 > 详细

038 使用shiro的方法注解方式进行权限控制 - bos

时间:2017-08-22 16:13:00      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:过滤   attr   class   bat   iso   property   val   glib   异常捕获   


1.在Spring的配置文件中开启shiro的注解支持

<!-- 开启shiro框架注解支持 -->
<bean id="defaultAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<!-- 表示必须使用cglib方式为Action创建动态代理对象 -->
<property name="proxyTargetClass" value="true"/>
</bean>

<!-- 配置shiro框架提供的切面类,用于创建代理对象 -->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"></bean>

2.在Action的方法上添加注解,注明调用方法需要的权限

1.下面的注解表示执行StaffAction的deleteBatch方法需要用户具有staff-delete权限

/**
* 批量删除
* @return
*/
@RequiresPermissions("staff-delete")
public String deleteBatch(){
staffService.deleteBatch(ids);
return LIST;
}

3.注意开启注解时,proxyTargetClass要设置为true

<1>该属性默认为false,表示使用JDK提供的动态代理创建目标Action的代理对象,这要求目标类必须对接口编程
<2>这在StaffAction中并不适用,虽然StaffAction实现了接口,但向页面提供的方法并不是用接口定义的,因此若不设置为true将无法代理Action中的方法
<3>设置为true,表示使用cglib进行代理对象的创建,由于cglib是利用继承进行代理,因此对任何类都是适用的

4.当用户不具有权限时,核心过滤器会直接抛出异常,若不捕获则会直接再页面回显,用户不友好,因此要利用表现层框架捕获异常

5.在struts.xml中配置捕获权限不足所抛出的异常,并配置对应的处理页面,注意全局异常要在全局结果集的后面

<global-results>
<result name="login">/login.jsp</result>
<result name="unauthorized">/unauthorized.jsp</result>
</global-results>

<!-- 配置全局异常捕获 -->
<global-exception-mappings>
<exception-mapping result="unauthorized" exception="org.apache.shiro.authz.UnauthorizedException"/>
</global-exception-mappings>

038 使用shiro的方法注解方式进行权限控制 - bos

标签:过滤   attr   class   bat   iso   property   val   glib   异常捕获   

原文地址:http://www.cnblogs.com/tommychok/p/7411581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!