Spring Security – security none, filters none, access permitAll
1.概述
Spring Security提供了几种将请求模式配置为不安全或允许所有访问的机制。取决于这些机制中的哪一种 - 这可能意味着根本不在该路径上运行安全过滤器链,或者运行过滤器链并允许访问
2. access=”permitAll”
使用access =“permitAll”设置元素将配置授权,以便在该特定路径上允许所有请求:
<intercept-url pattern="/login*" access="permitAll" />
或者,通过Java配置:
http.authorizeRequests().antMatchers("/login*").permitAll();
这是在不禁用安全过滤器的情况下实现的 - 这些过滤器仍在运行,因此任何与Spring Security相关的功能仍然可用。
3. filters=”none”
这是Spring 3.1之前的功能,已在Spring 3.1中弃用并替换。
filters属性完全在该特定请求路径上禁用Spring Security过滤器链:
<intercept-url pattern="/login*" filters="none" />
当请求的处理需要Spring Security的某些功能时,这可能会导致问题。
由于这是一个不推荐使用的功能Spring版本高于3.0,使用它与Spring 3.1将导致启动时的运行时异常:
SEVERE: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: The use of "filters='none'" is no longer supported.
Please define a separate <http> element for the pattern you want to exclude
and use the attribute "security='none'".
Offending resource: class path resource [webSecurityConfig.xml]
at o.s.b.f.p.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
4. security=”none”
正如我们在上面的错误消息中看到的那样,Spring 3.1用一个新的表达式替换filters =“none” - security =“none”。
scope也发生了变化 - 不再在元素级别指定。Spring 3.1允许定义多个元素 - 每个元素都有自己的安全过滤器链配置。因此,新的安全属性现在属于元素级别。
在实践中,这将看起来像:
<http pattern="/resources/**" security="none"/>
或者使用Java配置:
web.ignoring().antMatchers("/resources/**");
而不是旧的:
<intercept-url pattern="/resources/**" filters="none"/>
与filters =“none”类似,这也将完全禁用该请求路径的安全过滤器链。因此,当在应用程序中处理请求时,Spring Security功能将不可用。对于上面的示例而言,这不是问题,其主要涉及提供静态资源 - 其中不进行实际处理。但是,如果以某种方式以编程方式处理请求 - 那么安全功能(例如,需求通道,访问当前用户或调用安全方法)将不可用。
出于同样的原因,没有必要在已经使用security =“none”配置的元素上指定其他属性,因为该请求路径是不安全的,并且将简单地忽略属性。
或者,access ='IS_AUTHENTICATED_ANONYMOUSLY'可用于允许匿名访问。
5. 注意事项:security=”none”
当使用多个元素时,有些配置了security =“none”,请记住,定义这些元素的顺序很重要。我们希望首先使用特定的路径,然后在最后使用通用模式。
另请注意,如果元素未指定模式,则默认情况下,映射到通用匹配模式 - “/ **”。所以,这个元素必须是最后的。如果元素的顺序不正确,则安全过滤器链的创建将失败:
Caused by: java.lang.IllegalArgumentException: A universal match pattern ('/**')
is defined before other patterns in the filter chain, causing them to be ignored.
Please check the ordering in your <security:http> namespace or FilterChainProxy bean configuration
at o.s.s.c.h.DefaultFilterChainValidator.checkPathOrder(DefaultFilterChainValidator.java:49)
at o.s.s.c.h.DefaultFilterChainValidator.validate(DefaultFilterChainValidator.java:39)
六,结论
本文讨论了允许使用Spring Security访问路径的选项 - 重点关注filters =“none”,security =“none”和access =“permitAll”之间的差异。
像往常一样,这些例子可以在GitHub上找到。
Spring Security – security none, filters none, access permitAll的更多相关文章
- Maven+Spring+Mybatis+Security+Mysql简短的框架
一段时间想搞个框架做开发,但是网上好多代码建立的都太杂乱.有的开源的东西我感觉用不了.本人太笨,不懂怎么上传到github上,就写在博客里,留作记录.以后用的时候也方便. 1.首先让我们看一下项目结构 ...
- Spring Boot Security 整合 JWT 实现 无状态的分布式API接口
简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念.本文重点讲解Spring Boo ...
- Spring Boot Security 整合 OAuth2 设计安全API接口服务
简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.本文重点讲解Spring Boot项目对OAuth2进行的实现,如果你对OAut ...
- Spring Boot Security OAuth2 实现支持JWT令牌的授权服务器
概要 之前的两篇文章,讲述了Spring Security 结合 OAuth2 .JWT 的使用,这一节要求对 OAuth2.JWT 有了解,若不清楚,先移步到下面两篇提前了解下. Spring Bo ...
- Spring Boot Security Oauth2之客户端模式及密码模式实现
Spring Boot Security Oauth2之客户端模式及密码模式实现 示例主要内容 1.多认证模式(密码模式.客户端模式) 2.token存到redis支持 3.资源保护 4.密码模式用户 ...
- Spring Boot Security And JSON Web Token
Spring Boot Security And JSON Web Token 说明 流程说明 何时生成和使用jwt,其实我们主要是token更有意义并携带一些信息 https://github.co ...
- Spring Boot Security 保护你的程序
Spring Boot Security 本示例要内容 基于角色的权限访问控制 加密.解密 基于Spring Boot Security 权限管理框架保护应用程序 String Security介绍 ...
- Spring boot Security 登陆安全配置
实现的效果 访问url时,如果未登录时跳转到Login界面,要求用户登陆,如果登陆过返回请求的数据. 效果图 访问数据时,未登录返回login界面 登陆操作 登陆成功进入登出界面 登陆成功后再次访问数 ...
- Spring Boot Security 使用教程
虽然,我在实际项目中使用的是 shiro 进行权限管理,但 spring boot security 早已大名鼎鼎,虽然他的入门要相对复杂一点,但是设计视乎更加吸引人. 本章节就是以一篇快速入门 sp ...
随机推荐
- html5--3.21 课程小结与其他新增元素
html5--3.21 课程小结与其他新增元素 学习要点 了解新增的input属性pattern 其他几个新增元素(非表单中元素,但是也放在这里讲解) 新增的input属性pattern:设定输入类型 ...
- 洛谷【P839】【NOI导刊】——数页码
题面 一道找规律好题... 首先,我们肯定只能一位一位的统计答案,考虑从高位向低位统计,显然这样要方便的多. 对于第i位,我们统计从$a[i+1]*10^i+0$到$a[i+1]*10^i+a[i]* ...
- Linux下压缩某个文件夹命令
tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.ta ...
- codeforces 665B B. Shopping(水题)
题目链接: B. Shopping time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- SDOI2017 Round1 Day2 题解
T2好厉害啊……AK不了啦……不过要是SCOI考这套题就好了240保底. BZOJ4819 新生舞会 模板题,分数规划+二分图最大权匹配. 费用流跑得过,可以不用KM. UPD:分数规划用迭代跑得飞快 ...
- 「LuoguP3808」 【模板】AC自动机(简单版)
题目背景 通过套取数据而直接“打表”过题者,是作弊行为,发现即棕名. 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. ...
- TCP连接状态变化
TCP连接状态变化 参考文章:TCP连接的状态详解以及故障排查 TCP建立连接--三次握手 CLOSED:起始状态,无任何连接. LISTEN:服务端建立socket之后需要listen进入LISTE ...
- MVC中为自动生成实体类添加验证
将额外的基于特性的元数据(象验证特性)施加到由VS设计器自动生成/维护的类的一个方法是,采用一个我们称之为“伙伴类(buddy classes)”的技术. 基本上来说,你创建另外一个类,包含你的验证特 ...
- Ubuntu 安装mysql和 简单命令操作
ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-clie ...
- seafile文档
https://manual-cn.seafile.com/deploy_windows/download_and_setup_seafile_windows_server.html