![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Цель - определить свой authentication manager. Ну и заставить его работать. Пишу в ...-security.xml следующее:
Ошибка - No UserDetailsService registered. Я так понимаю, что нужно ещё указать AuthenticationProvider, а в нём указать ссылку на authenticationManager и на UserDetailsService. Никак не найду - как это правильно сделать в данном случае. |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет.
Вот тебе пример как конфигурятся AuthenticationProvider и UserDetailsService:
И встречный вопрос: зачем тебе кастомный AuthenticationManager? По-умолчению используется org.springframework.security.providers.ProviderManager, который ищет в конфиге все бины, которые являются провайдерами. В моем примере такой бин помечен хинтом <security:custom-authentication-provider/> Это сообщение отредактировал(а) MisterCleric - 15.12.2010, 12:06 -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Собственно, кастомный AuthenticationManager, наверное, не нужен. Я сейчас просто рассматриваю возможные варианты "кастомизации" SpringSecurity. Прежде использовал org.springframework.security.userdetails.jdbc.JdbcDaoImpl, который делает всё сам. Вот, наткнулся в интернете на пример кастомного AuthenticationManager-а, но он у меня не совсем работает... Но, как я понял, прямой путь - своя реализация UserDetailsService. Так и делаю, в общем, работает. У меня пока нет никакого datasource, есть один единственный пользователь petya)) Но у него есть пароль. Вопрос: что мне нужно сделать, чтобы в методе loadUserByUsername проверялся не только логин, но и пароль? Вот как сейчас выглядит мой UserDetailsService
|
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет.
Вообще-то пароль проверяется в DaoAuthenticationProvider.additionalAuthenticationChecks... Вообще там процесс получается такой: 1. При логине вызывается AbstractUserDetailsAuthenticationProvider.authenticate 2. Он вызывает retrieveUser который делегируется в UserDetailsService.loadUserByUsername 3. В случае успеха вызывается additionalAuthenticationChecks, где уже и происходит сравнение введенного пароля с тем, который получили в юзере. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
check |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
В таком случае, мне нужен свой AuthenticationProvider.
Пишу:
В конфиге пытаюсь прописать AuthenticationProvider двумя способами:
и
Но в обоих случаях методы моего провайдера не вызываются. |
||||||
|
|||||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
А я же в своем примере обращал внимание на хинт:
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Да, я так и подумал... У меня SpringSecurity 2.0.6. Там префикс security не предусмотрен схемой. У меня во всяком случае выдаётся SAXParseException.
Ищу аналог для своей версии, пока не нашёл. |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
У тебя ж security: является namespace по-умолчанию
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Тем не менее эклипс подсвечивает эту строку как ошибку и пишет "The prefix "security" for element "security:custom-authentication-provider" is not bound."
То же самое пишется в иксепшене при попытке задеплоить приложение. Вот такая схема используется
|
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Так убери этот префикс
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
А... Я даже и не думал, что его можно просто убрать))
Ну тогда всё работает. Спасибо! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |