文档章节

spring security 3 配置 access-denied-handler

guhai2004
 guhai2004
发布于 2015/01/20 00:40
字数 416
阅读 3285
收藏 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 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 Security教程之Spring Security实现访问控制

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

爱吃猫的小萌鱼
2014/01/23
0
0
spring-security3 配置和使用

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

blooms
2012/09/18
0
2

没有更多内容

加载失败,请刷新页面

加载更多

人工智能起步-反向回馈神经网路算法(BP算法)

人工智能分为强人工与弱人工。 弱人工智能就包括我们常用的语音识别,图像识别等,或者为了某一个固定目标实现的人工算法,如:下围棋,游戏的AI,聊天机器人,阿尔法狗等。 强人工智能目前只...

Python女神
7分钟前
2
0
RabbitMQ Dead Letter Exchange

简称DLX 如果一个queue设置了DLX,那么在rabbitmq的管理控制台中的这个queue上就会多个标志,如图: 边上还有DLK,是dead-letter-routing-key的缩写。 队列中的消息,有可能是'dead-lettere...

wmzsonic
18分钟前
0
0
case when then

case具有两种格式。简单case函数和case搜索函数。 --简单case函数case sex when '1' then '男' when '2' then '女’ else '其他' end--case搜索函数case when sex = '1' the...

architect刘源源
25分钟前
1
0
Kubernetes探秘—kubelet的配置参数

kubelet是Kubernetes中的核心组件,需要在每一个节点安装,也是kubernetes集群启动的第一个服务。kubelet的参数存放在多个目录,修改时如果不完整就会导致各种错误,下面我们kubelet的参数存...

openthings
28分钟前
1
0
如何通过 MySQL 的二进制日志恢复数据库数据

经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过 MySQL 的二...

吴伟祥
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部