Erhalten Sie Zugriff auf HttpServletRequest innerhalb einer benutzerdefinierten AuthenticationProvider
Wie bekomme ich Zugriff auf HttpServletRequest innerhalb einer benutzerdefinierten AuthenticationProvider. Ich habe versucht dies zu tun
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String username = (String) httpReq.getAttribute("j_username");
ODER
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest httpReq = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
String username = (String) httpReq.getAttribute("j_username");
bin ich immer der Benutzername null
aber RequestContextHolder.getRequestAttributes(); gibt null zurück.
Möchte ich verweisen auf das requestcontext werden, übergeben Sie es oder Frühjahr tun seine Magie, so kann ich darauf verweisen.
Ich bin auch, was die RequestContextListener in meinem web.xml
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Habe ich danach gesucht, das security forum aber noch nicht gefunden, noch nichts.
Vielen Dank im Voraus.
- Sollte nicht diese Anmeldeinformationen werden innerhalb der Authentifizierung ein Objekt? static.springsource.org/spring-security/site/docs/3.0.x/apidocs/...
- Dardo ist richtig. Ich denke, Sie sollten wahrscheinlich betrachten Sie einige grundlegende Muster und Lesen Sie einige der Unterlagen, dann erklären Sie im detail, was Sie versuchen zu erreichen, denn ich kann nicht denken Sie an einen gültigen Grund für den Versuch, Zugriff auf den Benutzernamen in dieser Art und Weise.
- Die Anmeldeinformationen werden in der Tat werden in der Authentication-Objekt. Aber ich bin auch auf der Suche nach einer Lösung. Auch ich zugreifen zu können, müssen die Anfrage, aber aus einem anderen Grund. In meiner app die URL spielt eine Rolle in der Authentifizierung. Irgendwelche Ideen auf, wie man es in dieser Klasse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich nur noch den Hörer an mein web.xml und RequestContextHolder.getRequestAttributes() gibt die RequestAttributes anstelle von null.
Wenn Sie möchten, passen Sie die login-Formular, warum Sie nicht verlängern diesen filter: org.springframework.Sicherheit.web.die Authentifizierung.AbstractAuthenticationProcessingfilter
Anforderung.getParameter("j_username"); statt zu verlangen.getAttribute("j_username");
Es funktioniert für mich. Sehen Sie, wenn es Ihnen hilft.