Плагины безопасности GRAILS Spring

Я использую плагин безопасности Spring для своего приложения Grails, но у меня есть требование предварительно обработать имя пользователя перед аутентификацией, например, если пользователь вводит «домен \ имя пользователя», мне нужно только удалить домен.

Я использую эти плагины

    compile ":spring-security-core:2.0-RC5"
    compile ":spring-security-ldap:2.0-RC2"

Кроме того, я не могу добавить настраиваемую форму, мне нужно использовать для этого базовую аутентификацию. Спасибо.


person user3295096    schedule 03.08.2015    source источник
comment
Мне нужно переопределить какие-либо методы фильтрации?   -  person user3295096    schedule 04.08.2015
comment
вы можете переопределить UserDetailsService   -  person Igor Artamonov    schedule 04.08.2015
comment
Для настраиваемой формы вам просто нужно переопределить LoginController и представления плагина безопасности.   -  person YAT    schedule 04.08.2015


Ответы (2)


Я сам этого не делал, но могу дать вам представление о том, что вам нужно сделать.

LoginController не обрабатывает HTTP-запрос POST, поступающий из формы входа. Как вы можете видеть в методе аутентификации здесь, URL-адрес HTTP POST берется из записи конфигурации. Вероятно, это / j_spring_security_check. Этот URL-адрес соответствует фильтру Spring Security, а не методу контроллера Grails. По сути, вам необходимо настроить фильтр, который перехватывает / j_spring_security_check и удаляет домен из имени пользователя.

Об этих фильтрах можно многое узнать. Я все еще разбираюсь в этом, но хорошим ресурсом является Справочник по безопасности Spring. Подклассы подключаемого модуля Twitter Auth AbstractAuthenticationProcessingFilter, реализует tryAuthentication (), а затем регистрирует фильтр с помощью SpringSecurityUtils.registerFilter ().

person Emmanuel Rosa    schedule 05.08.2015

Мне удалось решить эту проблему, переопределив BasicAuthenticationFilter и изменив метод doFilter () на индивидуальный метод в зависимости от моих потребностей.

person user3295096    schedule 06.08.2015