我正在使用SpringBootV2.4.2来承载一些基于jax-rs(jersey)的RESTAPI。这些API使用spring的内存身份验证程序(即通过扩展 WebSecurityConfigurerAdapter
.
下面是代码片段:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
auth.inMemoryAuthentication()
.withUser(username)
.password(encoder.encode(passwd));
}
现在的问题是,如果用户(在本例中为管理员)更新其密码,如何更新内存中的身份验证机制。我允许用户在登录后使用默认用户名/密码(仅管理员知道)更新密码。
如何将代码流/事件返回到 configure(AuthenticationManagerBuilder auth)
方法使用新密码?
谢谢
2条答案
按热度按时间tvmytwxo1#
这个
InMemoryUserDetailsManager
实现两个接口:UserDetailsManager
及UserDetailsPasswordService
.这两个接口有两种方法:
changePassword
及updatePassword
分别地您可以插入其中任何一个,并使用其实现更改用户的密码。详情请参阅
InMemoryUserDetailsManager
实施pengsaosao2#
我建议您将密码设置在通常获取密码的位置,然后刷新主体。方法:更新密码,注销用户并再次登录。在更改密码之后强制用户再次登录可能是公平的,如果Auth&AuthIn被内置,这是常见的做法。