Я хотел бы разрешить доступ к определенному методу более чем одной группе пользователей. Возможно ли в Spring Security 3.x сделать это с помощью аннотации @Secured? Рассмотрим две группы (роли) ОПЕРАТОР и ПОЛЬЗОВАТЕЛЬ, будет ли этот код действительным:
@Secured("ROLE_OPERATOR", "ROLE_USER")
public void doWork() {
// do useful processing
}
Вопрос
Разрешены ли несколько ролей в аннотации @Secured с помощью Spring Security
Ответы
Ответ 1 · рейтинг 41 · Donal Fellows
Ты почти там. Синтаксически вам нужно написать это так:
@Secured({"ROLE_OPERATOR", "ROLE_USER"})
public void doWork() { ... }
Это связано с тем, что вы предоставляете несколько значений одному атрибуту массива аннотации. (Java в синтаксических особых случаях передает одно значение, но теперь вам нужно сделать это "правильно".)
Ответ 2 · рейтинг 20 · 10GritSandpaper
Ответ @Donal Fellows верен для приложений Spring. Однако, если вы работаете в Grails, вам нужно использовать синтаксис Groovy для списков, чтобы код выглядел так:
@Secured(["ROLE_OPERATOR", "ROLE_USER"])
public void doWork() { ... }
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.