ログアウトせずに現在のログオンユーザーに関連付けられているロールを更新しようとしていますが、うまくいかないようです。ここでSpring Security 4でログインしているユーザーの役割を動的に変更するにはどうすればよいですか?
は私のコードです:
PreAuthenticatedAuthenticationToken authtoken_orig = (PreAuthenticatedAuthenticationToken) SecurityContextHolder
.getContext().getAuthentication();
Collection<? extends GrantedAuthority> Authorities_orig = authtoken_orig.getAuthorities();
ArrayList<SimpleGrantedAuthority> Authorities_new = new ArrayList<SimpleGrantedAuthority>();
for (GrantedAuthority sga : Authorities_orig) {
SimpleGrantedAuthority tmpsga = (SimpleGrantedAuthority) sga;
if (tmpsga.getAuthority().compareTo("ROLE_UNKNOWN") != 0
&& tmpsga.getAuthority().compareTo("ROLE_SIGNER") != 0) {
Authorities_new.add(tmpsga);
}
}
SimpleGrantedAuthority role_signer_auth = new SimpleGrantedAuthority("ROLE_SIGNER");
Authorities_new.add(role_signer_auth);
PreAuthenticatedAuthenticationToken authtoken_new = new PreAuthenticatedAuthenticationToken(
authtoken_orig.getPrincipal(), authtoken_orig.getCredentials(), Authorities_new);
SecurityContextHolder.clearContext();
SecurityContextHolder.createEmptyContext().setAuthentication(authtoken_new);
あなたはアドバイスできますか?事前に
おかげ
デビッドL.のようにログインしているユーザーの権限を付与
は、私は、クライアント証明書認証と連携...ので、securitycontextholder(
sc
はsecuritycontext
です) UsernamePasswordAuthenticationTokenの代わりにPreAuthenticatedAuthenticationTokenが含まれています...問題はこのメソッドに関連していますか?なぜなら、私はこのサンプルで行うようにコンテキストをクリアしようとする前にあなたのメソッドを試したからです –