您好,我有一個(gè) Rest WS,使用 WebSecurityConfigurerAdapter 來(lái)實(shí)現(xiàn) HTTP 基本身份驗(yàn)證。允許更新密碼,我需要讓 WS 在不重新啟動(dòng)服務(wù)器的情況下獲取更新的密碼以下是代碼:安全配置// init a user with credentials admin/password@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http //disable csrf .csrf().disable() //authentic all requests .authorizeRequests().anyRequest().authenticated().and().httpBasic() //disable session .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); } @Override public void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(inMemoryUserDetailsManager()); } @Bean public InMemoryUserDetailsManager inMemoryUserDetailsManager() { Properties users = new Properties(); users.put("admin", "password,USER,enabled"); return new InMemoryUserDetailsManager(users); }}將更新密碼的控制器@RestControllerpublic class someController{ @Autowired public InMemoryUserDetailsManager inMemoryUserDetailsManager; // update password from password -> pass @RequestMapping(...) public updatePass(){ ArrayList<GrantedAuthority> grantedAuthoritiesList = new ArrayList<>(); grantedAuthoritiesList.add(new SimpleGrantedAuthority("USER")); this.inMemoryUserDetailsManager.updateUser(new User("admin", "pass", grantedAuthoritiesList)); }第一次使用憑據(jù) admin/password 調(diào)用 updatePass() 后,我可以看到密碼已在調(diào)試器中更新為“pass”我認(rèn)為如果我要再次調(diào)用 updatePass() ,我應(yīng)該使用admin/pass。然而事實(shí)證明仍在使用舊的admin/password。我在編寫此代碼時(shí)引用的來(lái)源source1 source2*我正在使用 Advance Rest Client 撥打電話
InMemoryUserDetailsManager updateUser 調(diào)用后未獲取更新的密碼
繁星點(diǎn)點(diǎn)滴滴
2024-01-05 09:50:55