gpt4 book ai didi

java - 如何更改 Spring Security 中 ProviderManager 的行为?

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:51 25 4
gpt4 key购买 nike

ProviderManager 的默认行为是:

  1. 尝试使用 AuthenticationProviders 列表进行身份验证,直到成功或耗尽所有 AuthenticationProvider。

  2. 如果抛出 InternalAuthenticationServiceException,ProviderManager 会重新抛出此异常,并且不会尝试使用更多 AuthenticationProvider。

  3. 如果抛出 AccountStatusException,ProviderManager 会重新抛出此异常,并且不会尝试使用更多 AuthenticationProvider。

我想要什么:

  1. 如果出现InternalAuthenticationServiceException,那么它应该检查是否允许使用其他AuthenticationProvider,如果是,则继续使用。

  2. 如果抛出 AuthenticationException,则意味着用户未经身份验证,而不是重新抛出它并向调用者发送未经身份验证的响应,不要尝试使用更多 AuthenticationProvider。

我做了什么:

我创建了自己的 ProviderManager(让我们称之为 MyProviderManager)类,并编写了自己的authenticate(身份验证身份验证)方法定义。

现在我希望 spring 使用 MyProviderManager 而不是 ProviderManager。

我应该如何配置它?有办法吗?如果没有,我可以通过哪些其他方法来更改 ProviderManager 的行为?

最佳答案

所以答案是

  1. 通过 XML 或 JAVA 定义您自己的 Provider bean 配置。

  2. 在 Http 和 global-method-security 中,添加authentication-manager-ref 作为您的 bean id,Spring Security 将使用您的 Provider Manager 而不是 Springs 的。

关于java - 如何更改 Spring Security 中 ProviderManager 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28088307/

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