- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为一名解决方案架构师,我想为当前应用程序上下文中的所有 Spring Security 过滤器链添加一个过滤器,无论它们是如何或在何处声明的,这样忘记添加它的开发人员就不会错过这个过滤器.
假设不同的开发人员添加了一些自定义安全性来解决特定于其过滤器的不同逻辑问题。可以有 1 个或多个 WebSecurityConfigurerAdapter
public class DeveloperWebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.mvcMatcher("/forgottenFilter/**")
//.addFilter(reallyImportantFilter)
.authorizeRequests()
.anyRequest().access("developerDefinedCriteria");
}
}
我自己可以声明一个 WebSecurityConfigurerAdapter 来向 HttpSecurity 添加一个过滤器,但这被视为一个单独的包罗万象的过滤器链。
public class FrameworkWebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
Filter reallyImportantFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilter(reallyImportantFilter);
}
}
实际上,我并没有将我的过滤器添加到开发者链中,而是创建了一个完全独立的链,该链会干扰其他过滤器链的映射。
DefaultSecurityFilterChain INFO: Creating filter chain: any request, [... ReallyImportantFilter@77ce8bc5 ...]
DefaultSecurityFilterChain INFO: Creating filter chain: Mvc [pattern='/forgottenFilter/**'] [...]
有没有开箱即用的方法来配置这样的过滤器?如果没有,可以应用什么模式来避免过滤器被遗忘?
最佳答案
我想到了WebSecurityConfigurerAdapter
的一个功能。 javadoc状态:
Will automatically apply the result of looking up AbstractHttpConfigurer from SpringFactoriesLoader to allow developers to extend the defaults. To do this, you must create a class that extends AbstractHttpConfigurer and then create a file in the classpath at "META-INF/spring.factories" that looks something like:
org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer = sample.MyClassThatExtendsAbstractHttpConfigurer
例如,在您的情况下,您可以创建自己的 AbstractHttpConfigurer
实现,在其中添加非常重要的过滤器:
package sample;
// ...
public class CustomSecurityConfigurer<H extends HttpSecurityBuilder<H>>
extends AbstractHttpConfigurer<CustomSecurityConfigurer<H>, H> {
@Override
public void init(H http) { }
@Override
public void configure(H http) {
// add your own filter... for example:
http.addFilterAfter(new ImportantFilter(), LogoutFilter.class);
}
}
...并将此行添加到 META-INF 文件夹中的 spring.factories 中:
org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer=sample.CustomSecurityConfigurer
在 WebSecurityConfigurerAdapter
中,此配置器被添加到配置器“列表”中(例如 CsrfConfigurer
、LogoutConfigurer
...),这将构建HttpSecurity
,并最终构建相应的过滤器链。
如果您有多个 WebSecurityConfigurerAdapter
,每个都将应用此配置器,因此您最终将配置从 HttpSecurity
创建的每个过滤器链。
关于java - 如何在所有 HttpSecurity 配置器中添加过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418500/
我正在为 Spring Boot Rest 服务器配置 HttpSecurity,并且我需要使创建用户端点不需要身份验证。 Controller 方法的映射是POST/users/{username}
我有带有 OAuth2 的 Spring Boot 应用程序。我想打开一些端点以进行匿名访问。我可以使用以下方法做到这一点: http .authorizeRequests()
我的Grails 3.0.3应用程序中有一个相当简单的安全配置: @Configuration @EnableWebSecurity class SecurityConfiguration exten
作为一名解决方案架构师,我想为当前应用程序上下文中的所有 Spring Security 过滤器链添加一个过滤器,无论它们是如何或在何处声明的,这样忘记添加它的开发人员就不会错过这个过滤器. 假设不同
您可以通过执行以下操作向响应添加 header @EnableWebSecurity public class CacheControl extends WebSecurityConfigurerAd
我从这里开始关注 Spring Security 指南,http://docs.spring.io/spring-security/site/docs/3.2.0.RELEASE/reference/
我有一个 Spring Boot + Spring Security 应用程序,它有几个antMatchers 路径;一些 fullyAuthenticated(),一些 permitAll()。 如
I am doing Spring Security Oauth2. In client side I override configure(HttpSecurity http) method and
我试图了解 RequestMatcher、AntMatcher 等是如何工作的。我阅读了一些帖子并了解了基础知识。实际上我有这个简单的基本配置: @Override protected void co
我正在尝试向我的应用程序添加一个不安全的 Controller 端点 /foo/bar,但每当我尝试调用它时,我都会收到 401 Unauthorized。 这是我的 WebSecurityConfi
谁能解释一下何时覆盖 configure(HttpSecurity)、configure(WebSecurity) 和 configure(AuthenticationManagerBuilder)?
我收到 POST 端点错误 403 Forbidden,其他端点按预期工作。 我有 4 个端点,我需要重现身份验证行为: GET \users - no authentication GET \det
要在 Spring Boot 中提供自定义身份验证提供程序,我是否需要以下两项?它们有什么区别? AuthenticationManagerBuilder HttpSecurity.authentic
这个问题已经有答案了: Spring Security : Multiple HTTP Config not working (2 个回答) 已关闭 4 年前。 我已按照以下说明为管理员和用户创建两个
我尝试实现spring security,但是我有很多角色和权限,然后我想将角色动态添加到彼此的资源中。喜欢它: @Override protected void configure(HttpSecu
我正在尝试将 Spring Security 实现到我的基于 MVC Maven 的项目,并已包含 Spring Boot。 我有工作前端和后端,但直到现在我都在使用假登录 - 我只是通过 JS 和
在 WebSecurityConfigurerAdapter 类中,我们使用 protected void configure(HttpSecurity http) 方法为请求添加限制。我想要的是:
我听从了 official documentation 的建议关于如何配置两个单独的 HttpSecurity 实例: @Configuration @EnableWebSecurity public
我费尽心思编写了一个 DSL 来为我的自定义身份验证机制配置 HttpSecurity,但是我对其应用的大部分配置在应用程序运行时似乎都没有生效,而当我在 webapp 中手动配置时,一切都完美无缺。
我总是得到 http 状态 403。我有这个安全配置: @Override protected void configure(HttpSecurity httpSecurity) throws Exc
我是一名优秀的程序员,十分优秀!