Ошибка использования плагина Spring-Security в Grails
Я пытался интегрировать Spring-Security в одно из моих приложений Grails. Как уже упоминалось в руководстве по безопасности Spring, я установил плагин, используя следующий код
BuildConfig.groovy: я добавил следующий код
repositories {
mavenRepo 'http://repo.spring.io/milestone'
}
plugins {
compile ':spring-security-core:2.0-RC2'
}
Позже я очистил код и скомпилировал его, чтобы убедиться, что зависимости загружены. Я также проверил папку.grails, чтобы убедиться, что зависимости загружены.
Затем я создал классы User и Role. (Примечание: я назвал классы как Персона и Власть соответственно).
После этого я создал SecureController и не добавил никаких аннотаций безопасного доступа, но все же не могу получить доступ к безопасному контроллеру. Элемент управления напрямую перенаправляет на контроллер входа
Вопрос 1: после того, как после использования плагина безопасности Spring каждая страница нуждается в аутентификации. Есть ли способ получить доступ к странице без входа в систему
Затем я добавил аннотацию @Secured в SecureController. Аннотация @Secured вообще не обнаруживается, хотя она присутствует в папке плагинов для проекта. Сначала я думал, что что-то упустил, поэтому я снова создал проект, начав реализацию тех же шагов. Однако на этот раз плагин обнаружен
Вопрос 2: Почему плагин Spring-Security ведет себя так непоследовательно
Я попытался получить доступ к SecureController без входа в систему, я получаю следующую ошибку.
EL1008E: (pos 0): Поле или свойство 'ADMIN_ROLE' не может быть найдено для объекта типа 'org.springframework.security.web.access.expression.WebSecurityExpressionRoot'
Я также получаю ту же ошибку после входа в систему и попытки доступа к контроллеру.
Вопрос 3: я пропустил какие-либо зависимости, которые необходимо указать.
На странице входа форма приводит к некоторому действию 'j_security_check'. Я не заметил этого действия ни в одном из контроллеров.
Вопрос 4: Нужно ли создавать новое действие для с этим именем
Пожалуйста, помогите мне разобраться в этом вопросе. Заранее большое спасибо за помощь.
1 ответ
После установки плагина вам нужно запустить s2-quickstart, чтобы получить базовую конфигурацию.
Если вы хотите переименовать классы по умолчанию, вам нужно указать Spring Security это в файле Config.groovy:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'sys.Usuario'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'sys.UsuarioRol'
grails.plugins.springsecurity.authority.className = 'sys.Rol'
// This last two lines if you're using Requestmap Instances method for protect your resources
grails.plugins.springsecurity.requestMap.className = 'sys.Requestmap'
grails.plugins.springsecurity.securityConfigType = 'Requestmap'
Нижняя строка предназначена для отклонения всех запросов, если не существует правила для этих ресурсов.
grails.plugins.springsecurity.rejectIfNoRule = true
Как вы можете видеть в документации. У вас есть 4 разных формы для защиты ваших ресурсов.
- Защищенные аннотации
- Простая карта в Config.groovy
- Экземпляры карты запросов, хранящиеся в базах данных
- Использование выражений для создания описательных, детальных правил
Я согласен с Бертом, один вопрос на вопрос, пожалуйста.