2012-07-05 10 views
8

¿Cómo consigo el acceso a HttpServletRequest dentro de un AuthenticationProvider personalizado. He intentado hacer estoObtener acceso a HttpServletRequest dentro de un encargo AuthenticationProvider

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); 

HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); 
String username = (String) httpReq.getAttribute("j_username"); 

O

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); 
HttpServletRequest httpReq = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); 

String username = (String) httpReq.getAttribute("j_username"); 

estoy consiguiendo nombre de usuario nulo

pero RequestContextHolder.getRequestAttributes(); devuelve nulo.

quiero hacer referencia a la RequestContext, pasarlo en ella o tenga primavera haga su magia por lo que se puede hacer referencia a ella.

Yo también estoy dando el RequestContextListener en mi web.xml

<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
    </listener> 

He buscado el foro de seguridad, pero todavía havent encontrado nada todavía.

Gracias de antemano.

+0

¿No deberían esas credenciales estar contenidas dentro del objeto Autenticación? http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/AuthenticationProvider.html – dardo

+0

Dardo es correcto. Creo que probablemente debas mirar algunas muestras básicas y leer parte de la documentación, luego explicar con más detalle lo que estás tratando de lograr, porque no puedo pensar en una razón válida para intentar acceder al nombre de usuario de esta manera. –

+0

Las credenciales se encontrarán en el objeto Autenticación. Sin embargo, también estoy buscando una solución. Yo también necesito acceder a la solicitud, pero por otra razón. En mi aplicación, la URL juega un papel en la autenticación. ¿Alguna idea sobre cómo obtenerlo en esta clase? – Wouter

Respuesta

8

acabo añaden al oyente a mi web.xml y RequestContextHolder.getRequestAttributes() devuelve el RequestAttributes en lugar de nulo.

<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 

Si desea personalizar la forma de hacer login, ¿por qué no se extienden este filtro: org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

-2

Uso request.getParameter ("j_username"); en lugar de request.getAttribute ("j_username");

Funciona para mí. A ver si te ayuda.

Cuestiones relacionadas