現在のユーザーのロールをデータベースからロードしました。また、JSP で spring セキュリティ式を使用してユーザー ロールにアクセスし、hasRole で許可されていないオプションと URL を非表示にすることができます。今、私はそれをサーブレットに入れ、ログに表示したい(またはユーザーオブジェクトセッションに保存したい)。どうすればそれを達成できますか?
質問する
70960 次
6 に答える
75
あなたはこのようなことを試すことができます:
Collection<SimpleGrantedAuthority> authorities = (Collection<SimpleGrantedAuthority>) SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Authority変数にロールのコレクションがあります。
于 2012-04-10T17:15:09.697 に答える
35
Java 8 で開発する場合は、より簡単になります。
すべてのユーザー ロールを取得するには:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Set<String> roles = authentication.getAuthorities().stream()
.map(r -> r.getAuthority()).collect(Collectors.toSet());
ユーザーが特定のロール ( ROLE_USERなど) を持っているかどうかを確認するには:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
boolean hasUserRole = authentication.getAuthorities().stream()
.anyMatch(r -> r.getAuthority().equals("ROLE_USER"));
于 2017-03-21T21:17:58.550 に答える
7
HttpServletRequest からgetUserPrincipal()を呼び出してみてください。
于 2012-04-10T17:11:07.717 に答える