如何按条件中断 Spring Security Provider 链?
Posted
技术标签:
【中文标题】如何按条件中断 Spring Security Provider 链?【英文标题】:How to interrupt spring security provider chain by condition? 【发布时间】:2016-07-09 13:47:29 【问题描述】:我有以下 sring 安全配置:
<security:authentication-manager>
<security:authentication-provider ref="provider1"/>
<security:authentication-provider ref="provider2"/>
<security:authentication-provider ref="provider3"/>
<security:authentication-provider ref="provider4"/>
<security:authentication-provider ref="provider5"/>
<security:authentication-provider ref="provider6"/>
</security:authentication-manager>
如果现在晚于 21-00,我需要始终返回 auth fail。
我不想为每个提供者添加相同的代码。
有更好的方法吗?
【问题讨论】:
你可以投掷和AccountStatusException
。 ***.com/questions/9303502/…
@Evgeni 是正确的。但我不明白为什么这对 BadCredentialsException 不起作用
@Evgeni 我在文档中没有看到关于它的提及
我不知道。我刚刚找到了答案...
@Evgeni 还是谢谢
【参考方案1】:
这是自定义安全 Web 表达式的典型示例。它用于拦截 url 模式而不是身份验证提供程序
有关详细信息,请查看此answer,其中包含有关实现自定义表达式的更多详细信息
【讨论】:
这些提供程序是很多年前写的,我没有理清它们是如何工作的。我只需要添加额外的约束 这样我的想法就更好了,因为你不需要接触提供者,你只需要添加安全表达式。 请描述这个解决方案。我已经阅读了您的主题,但我仍然不明白。 我应该添加哪些类?以上是关于如何按条件中断 Spring Security Provider 链?的主要内容,如果未能解决你的问题,请参考以下文章
学好Spring Security 和Apache Shiro你需要具备这些条件
如何有条件地跳过 Grails Spring Security 插件过滤器链中的 SecurityContextPersistenceFilter 过滤器