現在のユーザーのロールをデータベースからロードしました。また、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   に答える