Ошибка использования плагина 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 разных формы для защиты ваших ресурсов.

  1. Защищенные аннотации
  2. Простая карта в Config.groovy
  3. Экземпляры карты запросов, хранящиеся в базах данных
  4. Использование выражений для создания описательных, детальных правил

Я согласен с Бертом, один вопрос на вопрос, пожалуйста.

Другие вопросы по тегам