文档章节

spring security 3 配置 access-denied-handler

guhai2004
 guhai2004
发布于 2015/01/20 00:40
字数 416
阅读 3261
收藏 4

近日用spring security 3 配置权限,遇到不少问题。网上查找,学习,一个一个的问题迎刃而解,现记录于此,备忘。

在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;
    }
}



© 著作权归作者所有

共有 人打赏支持
guhai2004
粉丝 7
博文 20
码字总数 3776
作品 0
呼和浩特
Spring Security教程之自定义Spring Security默认的403页面

在最新的Spring Security教程-Spring Security实现访问控制教程中,如果没有授权的用户访问加密的页面,默认的403页面就会展示 在本次教程中,我们教你两种自定义Spring Security 默认的403...

爱吃猫的小萌鱼
2014/01/23
0
0
spring security 3中关于ajax的处理

在spring security 3中,对于某些需要保护的url,可以很容易地实现当没权限的时候, redirect到一个页面(比如自定义的404.jsp页面)进行显示没权限的信息; 但有的时候,必须要对一些AJAX的...

jackyrong
2013/01/16
0
0
Spring Security教程之Spring Security实现访问控制

在Spring Security中,实现访问控制或权限控制是非常容易实现的,请看下面的代码片段: 它的意思是,只有“ROLE_ADMIN”权限的用户可以允许访问“ /admin*”路径,如果没有权限的用户访问则会...

爱吃猫的小萌鱼
2014/01/23
0
0
Spring security

Spring security is based on URL pattern, each URL pattern has an associated chain of interceptors that handles various aspect of security Eg. no security control......

zhanjia
2015/04/08
0
0
spring-security3 配置和使用

最近项目中要使用到spring-security,闲来没事就研究了下。发现入门挺简单的,在这里把自己的心得发下,希望对没有接触过想接触的朋友有帮助。 1、在spring-security官网下载最新jar然后拷贝...

blooms
2012/09/18
0
2

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
58分钟前
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
28
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部