Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security: автоматически создавать незарегистрированного пользователя. / 3 сообщений из 3, страница 1 из 1
23.08.2012, 16:28:27
    #37928297
MarMot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security: автоматически создавать незарегистрированного пользователя.
Добрый день!

Есть проект написанный на Spring с использованием Spring Security. Пользователи храняться в postgresql с паролями в md5.

При доступе с определенных ip, фильтр редиректит на страницу '/login.html'. При вводе логина и пароля, надо давайть доступ к сайту. Если пароль не верный, выводить сообщение. Если такого пользователя нет, то создавать нового и давайть доступ к сайту.

Подскажите, пожалуйста, где можно перехватить ошибку авторизации и достать логин/пароль, для создания пользователя.

Я пытался добраться через DefaultAuthenticationEventPublisher.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class MyAuthenticationEventPublisher extends DefaultAuthenticationEventPublisher {

	@Override
	public void publishAuthenticationFailure(AuthenticationException exception, Authentication authentication) {
		Object userName = authentication.getPrincipal();
		Object credentials = authentication.getCredentials();
		logger.warn("Failed login using USERNAME [" + userName + "]");
		logger.warn("Failed login using PASSWORD [" + credentials + "]");
		super.publishAuthenticationFailure(exception, authentication);
	}
}



spring-security.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
	<bean id="userDetailsService"
		class="com.model.persistence.security.UserDetailsDaoService">
		<constructor-arg ref="userDao" />
	</bean>

	<bean id="myAuthenticationEventPublisher"
		class="com.model.persistence.security.MyAuthenticationEventPublisher" />

	<bean id="daoAuthenticationProvider"
		class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
		<property name="userDetailsService" ref="userDetailsService" />
	</bean>

	<bean
		id="org.springframework.security.authentication.authenticationManager"
		class="org.springframework.security.authentication.ProviderManager">
		<property name="providers">
			<list>
				<ref bean="daoAuthenticationProvider" />
			</list>
		</property>
		<property name="authenticationEventPublisher" ref="myAuthenticationEventPublisher" />
	</bean>

	<security:authentication-manager alias="authenticationManager">
		<security:authentication-provider
			user-service-ref="userDetailsService">
			<security:password-encoder hash="md5" />
		</security:authentication-provider>
	</security:authentication-manager>



Но это событие не срабатывает.

Заранее спасибо.
...
Рейтинг: 0 / 0
23.08.2012, 16:37:35
    #37928317
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security: автоматически создавать незарегистрированного пользователя.
AuthenticationFailureHandler не оно?
...
Рейтинг: 0 / 0
23.08.2012, 17:02:30
    #37928369
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security: автоматически создавать незарегистрированного пользователя.
BlazkowiczAuthenticationFailureHandler не оно?
Совершенно точно оно!
Причем можно не выдумывать новое имя пользователя, а использовать то, что ввел "неправильно" пользователь - взять из реквеста.
Код: java
1.
String userName = request.getParameter("j_username");
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security: автоматически создавать незарегистрированного пользователя. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]