Grailsアプリでspring-security-coreプラグインを使用しています。コントローラアクションでの現在のユーザーの役割を知る必要があります。どうすればそれを取得できますか?
springSecurityService
をコントローラーに挿入できます。
_def springSecurityService
_
そして、あなたの行動で、電話してください:
def roles = springSecurityService.getPrincipal().getAuthorities()
ドキュメントを参照してください ここ 。
コントローラーから、プラグインがメタクラスに追加する2つのメソッドgetPrincipal
とisLoggedIn
を使用できます。
_def myAction = {
if (loggedIn) {
// will be a List of String
def roleNames = principal.authorities*.authority
}
}
_
アクションが保護されている場合は、loggedIn
/isLoggedIn()
チェックをスキップできます。
ユーザーが特定のロールに属しているかどうかを確認する必要がある場合は、SpringSecurityUtils.ifAllGranted
を使用します。これは、コンマで区切られたロールのリストを含む引数として単一の文字列を取ります。現在のユーザーがそれらすべてに属している場合はtrueを返します。 SpringSecurityUtils
にはifAnyGranted
、ifNotGranted
などのメソッドもあるので、何をしようとしても機能するはずです。
ユーザーを取得するには
def springSecurityService
def principal = springSecurityService.principal
String username = principal.username
SecurityContextHolderはそれを知っています:
SecurityContextHolder.getContext().getAuthentication().getAuthorities()