亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

InMemoryUserDetailsManager updateUser 調用后未獲取更新的密碼

InMemoryUserDetailsManager updateUser 調用后未獲取更新的密碼

繁星點點滴滴 2024-01-05 09:50:55
您好,我有一個 Rest WS,使用 WebSecurityConfigurerAdapter 來實現 HTTP 基本身份驗證。允許更新密碼,我需要讓 WS 在不重新啟動服務器的情況下獲取更新的密碼以下是代碼:安全配置// 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));    }第一次使用憑據 admin/password 調用 updatePass() 后,我可以看到密碼已在調試器中更新為“pass”我認為如果我要再次調用 updatePass() ,我應該使用admin/pass。然而事實證明仍在使用舊的admin/password。我在編寫此代碼時引用的來源source1 source2*我正在使用 Advance Rest Client 撥打電話
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

當您更新密碼時,如果用戶經過身份驗證,則必須在 springSecurityContext 對象中設置 UserDetails。



查看完整回答
反對 回復 2024-01-05
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

我沒有使用SecurityContext,而是覆蓋了UserDetailsService接口的loadUserByUsername函數,讓spring security始終從數據庫獲取最新的pwd。



查看完整回答
反對 回復 2024-01-05
  • 2 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號