:SecurityContextHolder.getContext().getAuthentication().getAuthorities()
はisUserInRole(String)
に渡す役割をGrantedAuthority
が含まれている場合
をHttpServletRequest.isUserInRole(文字列)を決定します。通常、ユーザーは自動的に追加されるため、このメソッドに "ROLE_"接頭辞を渡すべきではありません。あなたは、現在のユーザーが権限「ROLE_ADMIN」を持っているかどうかを判断する場合たとえば、あなたは次のように使用できます(また、hasAnyRole
)hasRole
ため
boolean isAdmin = httpServletRequest.isUserInRole("ADMIN");
同じことを、Spring Security Reference参照してください。
現在のプリンシパルに指定されたロールがある場合はtrue
を返します。デフォルトでは、指定されたロールが 'ROLE_'で始まらない場合、追加されます。これはdefaultRolePrefix
をDefaultWebSecurityExpressionHandler
に変更することでカスタマイズできます。
出典
2017-01-30 23:57:43
dur
ありがとうございます。私はこれ以上数時間を無駄にしていた。しかし、PreAuthorizeは私のコントローラでは動作していません。コントローラーレイヤーでは動作せず、サービスレイヤーでのみ動作するはずですか? –
この問題は、セキュリティ設定で@EnableGlobalMethodSecurity(prePostEnabled = true)を使用することによっても解決されます。 –