Chúng tôi đang sử dụng bảo mật mùa xuân 3.0.5, Java 1.6 và Tomcat 6.0.32. Trong tập tin cấu hình .xml, chúng tôi đã có:Làm cách nào để có được tên người dùng từ thông tin đăng nhập không thành công khi sử dụng bảo mật mùa xuân?
<form-login login-page="/index.html" default-target-url="/postSignin.html" always-use-default-target="true"
authentication-failure-handler-ref="authenticationFailureHandler"/>
và authenticationFailureHandler
chúng tôi định nghĩa là:
<beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
<beans:property name="exceptionMappings">
<beans:props>
<beans:prop key="org.springframework.security.authentication.BadCredentialsException">/index.html?authenticationFailure=true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
Java
@RequestMapping(params={"authenticationFailure=true"}, value ="/index.html")
public String handleInvalidLogin(HttpServletRequest request) {
//... How can I get the username that was used???
// I've tried:
Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME_KEY");
Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME"); // deprecated
}
Vì vậy, chúng tôi đang chỉ đạo tất cả BadCredentialsExceptions
đến index.html
và IndexController
. Trong số IndexController
Tôi muốn nhận được username
đã được sử dụng cho lần đăng nhập không thành công. Tôi có thể làm cái này như thế nào?
Tôi đã thử nhưng nó không hoạt động –
Chúng tôi có mã chính xác này hoạt động trong thiết lập của chúng tôi. Tôi không thể cho bạn biết tại sao nó sẽ không hoạt động trong bạn. Chúng tôi không phải định cấu hình bất kỳ điều gì mới cũng như không thay đổi bất kỳ tệp .xml nào ở bất kỳ đâu. Các chú thích dường như chỉ vào mùa xuân tại mã này và thực hiện nó khi có một thông tin đăng nhập xấu. Nó hoạt động hoàn hảo cho chúng ta. – kasdega
có thể nó yêu cầu một số cấu hình khác. Nhân tiện, tôi đã tìm ra một giải pháp thay thế. Cảm ơn bạn đã cung cấp thông tin, mặc dù :) –