文档章节

spring security 3 配置 access-denied-handler

guhai2004
 guhai2004
发布于 2015/01/20 00:40
字数 416
阅读 3222
收藏 5
点赞 1
评论 0

近日用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

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

Spring Security授权过程

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...

李玉长 ⋅ 05/05 ⋅ 0

Spring Security教程之Spring Security实现访问控制

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

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

spring security3中access-denied-handler ajax处理

//spring配置:<http use-expressions="true" auto-config="true"> <access-denied-handler ref="accessDeniedHandler"/></http>//用accessDeniedHandler来处理你的逻辑//比如区分ajax请求和......

安世博 ⋅ 2014/05/19 ⋅ 0

spring security 3中关于ajax的处理

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

jackyrong ⋅ 2013/01/16 ⋅ 0

SpringMVC配置component-scan出错

**-servlet.xml配置文件中加入 (配置controller扫描包) 这行代码,tomcat启动就会报错,不知道是什么原因。 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to ...

bridge_ca ⋅ 2014/03/23 ⋅ 1

Spring Security 退出

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...

李玉长 ⋅ 05/05 ⋅ 0

Spring-Security-OAuth2

OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而不需要将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,...

李玉长 ⋅ 05/10 ⋅ 0

初探Spring Security

remoting Provides intergration with Spring Remoting web Contains filters and related web-security infrastructure code.Anything with a servlet API dependency. You’ll need it if......

Rksi5 ⋅ 2014/05/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 17分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 23分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 25分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 34分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 36分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 59分钟前 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部