La adición de filtro personalizado en la primavera de de seguridad

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 Kommentare

  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>

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea