gpt4 book ai didi

java - 在 Spring Security 中 AuthenticationProvider 成功后做一些事情

转载 作者:行者123 更新时间:2023-11-30 07:25:25 25 4
gpt4 key购买 nike

我有多个 AuthenticationProvider(MyOwn、Kerberos、Local)。我想在身份验证成功后保存一些带有密码的信息。但每个提供者后面的代码都是不同的。所以我想在authenticationProvider成功后立即运行此代码。我怎样才能做到这一点?

如果我使用 AuthenticationSuccessHandler ,它将在提供者成功后运行。如果我在 CustomUserDetailsS​​ervice 中编写代码,我将无法访问其中的密码信息。

最佳答案

您可以注册 AuthenticationSuccessEvent 的监听器.

ProviderManager将身份验证委托(delegate)给每个已注册的 AuthenticationProvider 。通过 AuthenticationProvider 之一成功验证后,ProviderManager将发布AuthenticationSuccessEvent通过它AuthenticationEventPublisher .

如果您想接收此事件并获得 Authentication 的访问权限,下面的Java配置将注册一个ApplicationListener此事件上下文中的 bean:

@Bean
public ApplicationListener<AuthenticationSuccessEvent> authenticationSuccessEventListener() {
return new ApplicationListener<AuthenticationSuccessEvent>() {

@Override
void onApplicationEvent(AuthenticationSuccessEvent event) {
Authentication authentication = event.getAuthentication();
// TODO
}
};
}

ApplicationListener 的更多文档可以查到here :

关于java - 在 Spring Security 中 AuthenticationProvider 成功后做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880156/

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