2012-07-05 26 views
8

Làm cách nào để có quyền truy cập vào HttpServletRequest trong Trình xác thực tùy chỉnh. Tôi đã cố gắng làm điều nàyNhận quyền truy cập vào HttpServletRequest trong một AuthenticationProvider tùy chỉnh

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); 

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

HOẶC

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

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

tôi đang nhận được tên vô

nhưng RequestContextHolder.getRequestAttributes(); trả về null.

Tôi muốn tham chiếu đến requestcontext, chuyển nó vào hoặc có Spring làm Magic của nó để tôi có thể tham khảo nó.

Tôi cũng đưa ra các RequestContextListener trong web.xml của tôi

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

Tôi đã tìm kiếm các diễn đàn an ninh nhưng vẫn havent tìm thấy bất cứ điều gì được nêu ra.

Xin cảm ơn trước.

+0

Những thông tin đăng nhập đó có nên được chứa trong đối tượng Xác thực không? http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/AuthenticationProvider.html – dardo

+0

Dardo là chính xác. Tôi nghĩ có lẽ bạn nên xem xét một số mẫu cơ bản và đọc một số tài liệu, sau đó giải thích chi tiết hơn những gì bạn đang cố gắng đạt được, vì tôi không thể nghĩ ra một lý do hợp lệ để truy cập tên người dùng theo cách này. –

+0

Thông tin đăng nhập thực sự sẽ nằm trong đối tượng Xác thực. Tuy nhiên, tôi cũng đang tìm kiếm một giải pháp. Tôi cũng cần truy cập yêu cầu nhưng vì một lý do khác. Trong ứng dụng của tôi, URL đóng vai trò trong xác thực. Bất kỳ ý tưởng về làm thế nào để có được nó trong lớp học này? – Wouter

Trả lời

8

Tôi vừa thêm người nghe vào web.xml của mình và RequestContextHolder.getRequestAttributes() trả về các RequestAttributes thay vì null.

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

Nếu bạn muốn tùy chỉnh bạn vào ô đăng nhập, tại sao bạn không mở rộng bộ lọc này: org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

-2

Sử dụng request.getParameter ("j_username"); thay vì request.getAttribute ("j_username");

Nó phù hợp với tôi. Xem nếu nó giúp bạn.

Các vấn đề liên quan