Erro com Spring

4 respostas
anderson.bonavides

Pessoal to com um problema no Spring muito estranho, estou tentando obter um AuthenticationSuccessEvent mas não estou conseguindo. O método o qual eu faço a autenticação é o

public void onApplicationEvent(ApplicationEvent event) {
	
	if (event instanceof AuthenticationSuccessEvent) {	
		// mais detalhes do método...
	}

} // fim do método

Um detalhe importante é que estava funcionando mas eu tentei atualizar o Spring mas não consegui, ai reverti tudo para a versão que funcionava e agora nã funciona de jeito nenhum. Já tentei de tudo, clean, publish, apaguei do server e add novamente. Alguém tem uma ideia do que possa ser?

4 Respostas

mmaico
Olá, Vamos revisar suas configurações para entender o que ocorre. 1- Seu form login deve fazer referencia ao handler, no exemplo esta como o nome authenticationHandler:
<form-login login-page="/suapagina/de/login" login-processing-url="/j_spring_security_check"
				          always-use-default-target="false" authentication-success-handler-ref="authenticationHandler"
				authentication-failure-handler-ref="authenticationHandler" />
Você pode adicionar um evento para o logout assim:
<logout logout-url="/j_spring_security_logout" success-handler-ref="authenticationHandler" />
Agora é necessário fazer o registro do seu bean que será o handler, assim:
<beans:bean name="authenticationHandler"
			           class="br.com.algumacaoisa.AuthenticationHandler">
       </beans:bean>
O seu bean deve implementar as interfaces AuthenticationSuccessHandler, AuthenticationFailureHandler, LogoutSuccessHandler, obvio que se você não for manipular failure e logoutSuccess não precisa implementar.

Abraço!

anderson.bonavides
mmaico:
Olá, Vamos revisar suas configurações para entender o que ocorre. 1- Seu form login deve fazer referencia ao handler, no exemplo esta como o nome authenticationHandler:
<form-login login-page="/suapagina/de/login" login-processing-url="/j_spring_security_check"
				          always-use-default-target="false" authentication-success-handler-ref="authenticationHandler"
				authentication-failure-handler-ref="authenticationHandler" />
Você pode adicionar um evento para o logout assim:
<logout logout-url="/j_spring_security_logout" success-handler-ref="authenticationHandler" />
Agora é necessário fazer o registro do seu bean que será o handler, assim:
<beans:bean name="authenticationHandler"
			           class="br.com.algumacaoisa.AuthenticationHandler">
       </beans:bean>
O seu bean deve implementar as interfaces AuthenticationSuccessHandler, AuthenticationFailureHandler, LogoutSuccessHandler, obvio que se você não for manipular failure e logoutSuccess não precisa implementar.

Abraço!

Não tenho certeza mas acho que você está utilizando o acegi o meu está configurado desta forma aqui:

[url]http://tarangdesai.com/2011/07/08/authentication-success-handler-on-form-login-in-spring-security/[/url]

mmaico

Olá anderson.bonavides,

Não, essas configurações são do Spring Security 3.x, as configurações que eu passei são semelhantes a deste tutorial. A diferença é que o autor usa extensão e sobrecarga, essa é uma outra forma de se definir o handler.

Dentro das suas configurações você só precisaria alterar a classe CustomAuthenticationSuccessHandler para ao invés de extender SavedRequestAwareAuthenticationSuccessHandler, implementar AuthenticationSuccessHandler e testar para ver se ele vai redirecionar, embora nas configurações atuais já deveria funcionar!

Uma coisa que não esta no tutorial é a adição do seu contexto no web.xml, isso já foi feito!??

abraço!

anderson.bonavides

As configurações estão feitas, apenas eu alterei a versão e as configurações do JSF 1.2 para 2.1.7.

Criado 21 de novembro de 2012
Ultima resposta 22 de nov. de 2012
Respostas 4
Participantes 2