Estoy tratando de hacer un custom AuthenticationProcessingFilter para guardar algunos datos de usuario en la sesión después de iniciar sesión correctamente

aquí está mi filtro:

package projects.internal;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.security.Authentication;
import org.springframework.security.ui.webapp.AuthenticationProcessingFilter;

public class MyAuthenticationProcessingFilter extends AuthenticationProcessingFilter {


 protected void onSuccessfulAuthentication(HttpServletRequest request,
   HttpServletResponse response, Authentication authResult)
   throws IOException {
  super.onSuccessfulAuthentication(request, response, authResult);
  request.getSession().setAttribute("myValue", "My value is set");
 }
}

y aquí está mi security.xml archivo

<beans:beans xmlns="http://www.springframework.org/schema/security"  
 xmlns:beans="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security 
                        http://www.springframework.org/schema/security/spring-security-3.0.xsd">

 <global-method-security pre-post-annotations="enabled">

 </global-method-security>
 <http use-expressions="true" auto-config="false" entry-point-ref="authenticationProcessingFilterEntryPoint">
  <intercept-url pattern="/" access="permitAll" />
  <intercept-url pattern="/images/**" filters="none" />
  <intercept-url pattern="/scripts/**" filters="none" />
  <intercept-url pattern="/styles/**" filters="none" />
  <intercept-url pattern="/p/login.jsp" filters="none" />
  <intercept-url pattern="/p/register" filters="none" />
  <intercept-url pattern="/p/**" access="isAuthenticated()" />

     <form-login
   login-processing-url="/j_spring_security_check"
   login-page="/p/login.jsp"   
   authentication-failure-url="/p/login_error.jsp" />
  <logout />
 </http>

 <authentication-manager alias="authenticationManager">
 <authentication-provider>
    <jdbc-user-service data-source-ref="dataSource"/>
  </authentication-provider>
 </authentication-manager>

 <beans:bean id="authenticationProcessingFilter" class="projects.internal.MyAuthenticationProcessingFilter">
 <custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
    </beans:bean>

    <beans:bean id="authenticationProcessingFilterEntryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
    </beans:bean>


 </beans:beans>

da un error aquí:

<custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />

múltiples anotación que se encuentra en esta línea:cvc-atributo.3
cvc-complejo-tipo.4
cvc-enumeración-valido

¿cuál es el problema?

  • Está usted seguro de que el nombre de ‘authenticationProcessingFilter’ ya no tomado por el defecto de la Primavera Seguridad bean?
  • No hay una herramienta mejor para lo que necesitas:authentication-success-handler – agregue esto a su <form>, creo que se ajusta mejor que la del filtro.
InformationsquelleAutor user353682 | 2010-03-22

2 Comentarios

  1. 2
    • AUTHENTICATION_PROCESSING_FILTER no es un filtro válido alias, debe utilizar FORM_LOGIN_FILTER.
    • <custom-filter> se debe poner dentro de <http>

Dejar respuesta

Please enter your comment!
Please enter your name here