GrailsでSpringSecurityを使用して、コントローラーへのアクセスを制限しています。ユーザーに複数のロールが割り当てられていることを確認したいというユースケースがあります。「人はこの2つの役割を持っている」と同義の別の役割を作ることができると思いますが、それは私が望むよりもはるかに多くの変更を必要とします。
Spring Securityには、ユーザーがロールのリストのいずれかを持っているかどうかを確認するためのORバージョン式があります。
//allow user to access if he has role ROLE_ADMIN -OR- ROLE_USER
//note this is shortcut notation for hasAnyRole(["ROLE_ADMIN","ROLE_USER"])
@Secured(["ROLE_ADMIN","ROLE_USER"])
def index = {}
次のことを行う方法、またはSpring Expression Language(SpEL)を使用する方法はありますか?
//allow user to access if he has role ROLE_ADMIN -AND- ROLE_USER
@Secured("hasAllRole(['ROLE_ADMIN','ROLE_USER']")
def index = {}
注:SpringSecurityUtilsクラスにはメソッドがあります
public static boolean ifAllGranted(final String roles)