40

これはよくある問題だと思います...そしてグーグルした後、私は答えを十分に探し回っていなかったか、no1がそれを求めたに違いないと思います...だから許してください。

SpringSecurityをHibernateなどで使用しています。

そのため、ユーザー/プリンシパルがログインし、プロファイルにいくつかの変更を加えました。

DAOを使用してプロファイル(UserDetails)を更新し、プリンシパルにこの更新を自動的に反映させたい。

ただし、プリンシパルを再度取得すると、ダーティバージョンが取得されます(最初のログインから)。

更新されたUserDetailsをHibernateからSpringSecurityにリロードさせる方法を知っている人はいますか?

4

2 に答える 2

55

OKは掘り下げて、ついに答えを見つけました。

UsernamePasswordAuthenticationToken を作成し、更新されたプリンシパルをコンテキストに割り当てることができます。

Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);

「 Spring Security / SpringMVC で認証済みユーザーを手動で設定する方法」も参照してください。

于 2012-08-02T00:28:13.370 に答える