gpt4 book ai didi

spring - 以编程方式禁用 Spring Security

转载 作者:行者123 更新时间:2023-12-04 05:53:22 24 4
gpt4 key购买 nike

我有一个具有 Spring 安全性的 Web 应用程序,默认情况下所有页面都需要授权。在我的场景中,管理员可以在某些时候决定禁用某些页面的安全性或完全禁用它。怎样才能最好地做到这一点?我正在考虑修改 FilterChainProxy ,但我不清楚究竟是如何(getFilterChains() 返回一个不可修改的列表)?

最佳答案

子类 DelgatingFilterProxy并检查是否调用委托(delegate)的标志。

然后在您的 web.xml 中使用它来代替 DelegatingFilterProxy用于springSecurityFilterChain (假设您正在使用命名空间配置)。例如:

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>com.foo.spring.MyDelegatingFilterProxy</filter-class>
</filter>

在您的 DelegatingFilterProxy 中检查一个标志(例如,系统属性)以查看您是否应该委托(delegate)。
class MyDelegatingFilterProxy extends DelegatingFilterProxy {

override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {

if (System.getProperty("skipSpringSecurity" != null) {
// Ignore the DelegatingProxyFilter delegate
chain.doFilter(request, response)
} else {
// Call the delegate
super.doFilter(request, response, chain)
}
}
}

您可以使用相同的技术来使用总括通配符,例如 <security:intercept-url pattern="/**" access="ROLE_USER" />然后跳过为/下的一些路径调用 Spring Security 过滤器(对于静态文件等)。

关于spring - 以编程方式禁用 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com