web-dev-qa-db-ja.com

Spring Securityプラグインで現在のユーザーロールを取得するにはどうすればよいですか?

Grailsアプリでspring-security-coreプラグインを使用しています。コントローラアクションでの現在のユーザーの役割を知る必要があります。どうすればそれを取得できますか?

21
laxmi

springSecurityServiceをコントローラーに挿入できます。

_def springSecurityService_

そして、あなたの行動で、電話してください:

def roles = springSecurityService.getPrincipal().getAuthorities()

ドキュメントを参照してください ここ

32
Mike Sickler

コントローラーから、プラグインがメタクラスに追加する2つのメソッドgetPrincipalisLoggedInを使用できます。

_def myAction = {
   if (loggedIn) {
      // will be a List of String
      def roleNames = principal.authorities*.authority
   }
}
_

アクションが保護されている場合は、loggedIn/isLoggedIn()チェックをスキップできます。

20
Burt Beckwith

ユーザーが特定のロールに属しているかどうかを確認する必要がある場合は、SpringSecurityUtils.ifAllGrantedを使用します。これは、コンマで区切られたロールのリストを含む引数として単一の文字列を取ります。現在のユーザーがそれらすべてに属している場合はtrueを返します。 SpringSecurityUtilsにはifAnyGrantedifNotGrantedなどのメソッドもあるので、何をしようとしても機能するはずです。

4
matt forsythe

ユーザーを取得するには

    def springSecurityService
    def principal = springSecurityService.principal
    String username = principal.username
0
amit

SecurityContextHolderはそれを知っています:

SecurityContextHolder.getContext().getAuthentication().getAuthorities()
0
Erik Kaju