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 configurationat 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上找到

转载于:https://www.cnblogs.com/xjknight/p/10892027.html

Spring Security – security none, filters none, access permitAll相关推荐

  1. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解

    <深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  2. Spring 4 Security MVC登录注销示例

    Today we will learn about Spring Security Login Example. Before reading this post, please go through ...

  3. Spring Cloud(十二):Spring Cloud Security

    主要内容 Spring Security 模块 使用 设置用户名密码 基于内存 基于UserDetailsService 接口 基于配置类WebSecurityConfigurerAdapter 基于 ...

  4. java B2B2C springmvc mybatis电子商务平台源码-Spring Cloud Security

    一.SpringCloud Security简介           Spring Cloud Security提供了一组原语,用于构建安全的应用程序和服务,而且操作简便.可以在外部(或集中)进行大量 ...

  5. Spring Cloud Security:Oauth2使用入门

    摘要 Spring Cloud Security 为构建安全的SpringBoot应用提供了一系列解决方案,结合Oauth2可以实现单点登录.令牌中继.令牌交换等功能,本文将对其结合Oauth2入门使 ...

  6. spring boot security学习

    spring boot security(一) 配置认证和授权 通过继承WebSecurityConfigurerAdapter,可以重写其认证和授权的逻辑. @Configuration @Enab ...

  7. 微服务集成cas_Spring Cloud(四) Spring Cloud Security集成CAS (单点登录)对微服务认证...

    一.前言 由于leader要求在搭好的spring cloud 框架中加入对微服务的认证包括单点登录认证,来确保系统的安全,所以研究了Spring Cloud Security这个组件.在前面搭好的d ...

  8. gateway oauth2 对称加密_深入理解Spring Cloud Security OAuth2及JWT

    因项目需要,需要和三方的oauth2服务器进行集成.网上关于spring cloud security oauth2的相关资料,一般都是讲如何配置,而能把这块原理讲透彻的比较少,这边自己做一下总结和整 ...

  9. 玩转Spring Cloud Security OAuth2身份认证扩展——电话号码+验证码认证

    在程序的认证过程中,除了常规的用户名和密码方式(可以参考深入理解Spring Cloud Security OAuth2身份认证),也经常会出现电话号码+密码的方式:电话号码+验证码的方式:或者第三方 ...

最新文章

  1. LeetCode刷题记录9——58. Length of Last Word(easy)
  2. 像教光学一样在高中教深度学习?怼过LeCun的Google大牛认为这事有出路
  3. docker redis集群搭建_Redis集群模式搭建
  4. iOS LaunchScreen和LaunchImage的转换启动图
  5. 自觉培养“舆商” 争做成功网商
  6. Bootstrap全局CSS样式之表单
  7. 事务回滚什么意思 try_Spring事务管理(一)快速入门
  8. 学习用TypeScript写React组件
  9. 如何使用虚拟实验室建设思科IPS***防御课程的实验环境
  10. php文章列表源码,抓取文章列表
  11. Bex5常用方法总结
  12. 破天服务器的系统,《新破天一剑》束缚系统
  13. amd zen服务器芯片,【关注】ZEN架构32核64线程!AMD公布Naples服务器芯片预览
  14. Oracle 19C CDB操作课程笔记
  15. AmMap创建交互式Flash地图
  16. 使用ensembl的API下载数据
  17. OringPro 调整坐标轴
  18. Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo
  19. 【第64期】豆瓣9.8分,周志明的《凤凰架构》
  20. canvas画图--流畅没有齿痕的线,图像画线

热门文章

  1. Java多线程与同步
  2. 微博:建立在45度仰角基础上的媒体与社交平台
  3. android 端口开启,高通手机打开DIAG端口 开启端口指令
  4. android开发 listview 头部 轮播,listview添加的头部布局超过一屏头部内容显示不全...
  5. Unity渲染层级关系
  6. 牟合方盖matlab,牟合方盖的简要介绍 求牟合方盖体积的方法
  7. Java面试--线程同步方法
  8. 下面关于在dos停止mysql_下面关于数据查询的描述正确的是( ) (5.0分)_学小易找答案...
  9. r5 3600和r5 3500x对比哪个好
  10. mysql去重查询groupby