Есть ли в Spring Security 'hasAllRole', который выполняет AND-версию 'hasAnyRole'

Я использую Spring Security в Grails, чтобы ограничить доступ к своим контроллерам. У меня есть случай использования, когда я хочу проверить, что пользователю назначено несколько ролей. Я понимаю, что мог бы просто создать другую роль, которая является синонимом «у человека есть эти две роли», но для этого потребуется гораздо больше изменений, чем мне бы хотелось.

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)

0
задан skaffman 5 January 2012 в 20:54
поделиться