0

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)
4

3 に答える 3

3
hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')

これ以上簡単にすることはできません

于 2011-11-01T17:08:26.500 に答える
2

@PreFilterの代わりにを使用する場合は、次のように@Secured書くことができます。

@PreFilter("hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')")
于 2011-11-01T17:12:57.777 に答える
1

できませんでしたかhasRole('ROLE_ADMIN') and hasRole('ROLE_USER')

于 2011-11-01T17:08:09.507 に答える