2015-08-03 3 views
0

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

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

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

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

+0

Нужно ли переопределять любые методы фильтрации? – user3295096

+0

вы можете переопределить UserDetailsService –

+0

Для настраиваемой формы вам просто нужно переопределить 'LoginController' и представления плагина безопасности – YAT

ответ

0

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

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

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

0

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

Смежные вопросы