spring security 3 配置 access-denied-handler
2015-01-20 00:40
399 查看
近日用spring security 3 配置权限,遇到不少问题。网上查找,学习,一个一个的问题迎刃而解,现记录于此,备忘。
在spring security 3配置文件中配置<access-denied-handler error-page="" />后, 在自定义AccessDecisionManager类中抛出AccessDeniedException异常的时候并没有跳入相应的error- page页面, 所以只要通过加入AccessDeniedHandler来控制跳转到相应的路径。跳转路径可以在mvc的controller中映射并处理相关数据。
1. 修改
为
accessDeniedHandler为自定义的Handler
2. 在SS3配置文件中加入
此处的class="com.hhdem.laihecai.security.LaihecaiAccessDeniedHandler"是AccessDeniedHandler的实现类,也可以直接配置成spring security 的默认实现类,为errorPage指定转向页面。
其实如果只是简单的指定转向页面,到这一些就可以完成功能了,如果还需要处理一些其他数据,就需要新建实现AccessDeniedHandler的类,
3. 新建AccessDeniedHandler自定义类
在spring security 3配置文件中配置<access-denied-handler error-page="" />后, 在自定义AccessDecisionManager类中抛出AccessDeniedException异常的时候并没有跳入相应的error- page页面, 所以只要通过加入AccessDeniedHandler来控制跳转到相应的路径。跳转路径可以在mvc的controller中映射并处理相关数据。
1. 修改
<access-denied-handler error-page="" />
为
<access-denied-handler ref="accessDeniedHandler" />
accessDeniedHandler为自定义的Handler
2. 在SS3配置文件中加入
<beans:bean id="accessDeniedHandler" class="com.hhdem.laihecai.security.LaihecaiAccessDeniedHandler"> <beans roperty name="accessDeniedUrl" value="/accessDenied" /> </beans:bean>
此处的class="com.hhdem.laihecai.security.LaihecaiAccessDeniedHandler"是AccessDeniedHandler的实现类,也可以直接配置成spring security 的默认实现类,为errorPage指定转向页面。
<beans:bean id="accessDeniedHandler" class="org.springframework.security.web.access.AccessDeniedHandlerImpl"> <beans:property name="errorPage" value="/backend/admin/error403"/> </beans:bean>
其实如果只是简单的指定转向页面,到这一些就可以完成功能了,如果还需要处理一些其他数据,就需要新建实现AccessDeniedHandler的类,
3. 新建AccessDeniedHandler自定义类
public class LaihecaiAccessDeniedHandler implements AccessDeniedHandler { private String accessDeniedUrl; public LaihecaiAccessDeniedHandler() { } public LaihecaiAccessDeniedHandler(String accessDeniedUrl) { this.accessDeniedUrl = accessDeniedUrl; } public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { response.sendRedirect(accessDeniedUrl); String deniedMessage = accessDeniedException.getMessage(); String rp = request.getRequestURI(); request.getSession().setAttribute(Constants.ACCESS_DENIED_MSG, deniedMessage); } public String getAccessDeniedUrl() { return accessDeniedUrl; } public void setAccessDeniedUrl(String accessDeniedUrl) { this.accessDeniedUrl = accessDeniedUrl; } }
相关文章推荐
- Spring Security教程(9)---- 自定义AccessDeniedHandler
- Spring Security教程(9)---- 自定义AccessDeniedHandler
- Spring Security教程(9)---- 自定义AccessDeniedHandler
- Spring Security教程(9)---- 自定义AccessDeniedHandler
- Spring4.1使用c3p0加载配置文件连接数据库,Access denied for user 'root'@'localhost' 错误!
- OpenStack Keystone配置产生错误Access denied for user 'keystone'@'10.0.2.15' (using password: YES)") None N
- s2sh集成dataSource配置无效的问题 -Access denied for user 'sa'@'localhost'
- Spring-Security笔记6 自定义AccessDeniedHandler
- 调用properties数据源配置文件时出现 Access denied for user 'Administrator'@'localhost' (using password: YES) 错误
- ubuntu nfs配置 以及mount.nfs:access denied by server while mounting问题解决
- 自定义AccessDeniedHandler
- 自定义AccessDeniedHandler
- [原创]配置php+nginx 时遇到的”file not found","access denied"奇怪问题的解决过程
- 自定义AccessDeniedHandler
- 连接池配置出现access denied for user 'root'@'localhost'(using password:YES)异常
- 第一次配置mysql是出现错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- MySQL 5.5 正确配置 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y ES)
- 自定义AccessDeniedHandler
- Spring4.X使用c3p0加载配置文件连接数据库,出现的Access denied for user 'root'@'localhost' 错误!
- fail-windows7+eclipse+hadoop2.5.2环境配置 [报错 Access denied for user X方案一:修改配置文件]