大佬教程收集整理的这篇文章主要介绍了Spring自定义AuthenticationFailureHandler,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_1@我认为它配置正确
@H_301_1@
@H_301_1@我的实现是这样的
@H_301_1@
public class LoginFailureHandler implements AuthenticationFailureHandler {
private static final Logger log = LoggerFactory.getLogger(LoginFailureHandler.class);
public LoginFailureHandler() {
log.debug("I am");
}
@Autowired
private ObjectMapper customObjectMapper;
@Override
public void onAuthenticationFailure(httpServletrequest request,httpServletResponse response,AuthenticationException exception) throws IOException,ServletException {
log.debug("invalid login");
User user = new User();
user.setUsername("invalid");
try (OutputStream out = response.getOutputStream()) {
customObjectMapper.writeValue(out,user);
}
}
}
@H_301_1@在控制台中,我看到了
@H_301_1@
2013-04-11 14:52:29,478 DEBUG LoginFailureHandler - I am
@H_301_1@所以它被加载了.
@H_301_1@使用错误的用户名或密码,当抛出BadCredentialsException时,我看不到无效登录.@H_301_1@永远不会@L_935_15@method of onheuthenticationFailure.
@H_301_1@相反,服务会一次又一次地将浏览器重定向到/ rest / login …@H_301_1@编辑
@H_301_1@
2013-04-11 15:47:26,411 DEBUG de.pentos.spring.LoginController - Incomming login chuck.norris,norris
2013-04-11 15:47:26,412 DEBUG o.s.s.a.ProvideRMANager - Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider
2013-04-11 15:47:26,415 DEBUG o.s.s.a.d.DaoAuthenticationProvider - Authentication Failed: password does not match stored value
2013-04-11 15:47:26,416 DEBUG o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolving exception from handler [public de.pentos.spring.User de.pentos.spring.LoginController.login(de.pentos.spring.User)]: org.springframework.security.authentication.badCredentialsException: Bad credentials
2013-04-11 15:47:26,419 DEBUG o.s.w.s.m.a.ResponseStatusExceptionResolver - Resolving exception from handler [public de.pentos.spring.User de.pentos.spring.LoginController.login(de.pentos.spring.User)]: org.springframework.security.authentication.badCredentialsException: Bad credentials
2013-04-11 15:47:26,419 DEBUG o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolving exception from handler [public de.pentos.spring.User de.pentos.spring.LoginController.login(de.pentos.spring.User)]: org.springframework.security.authentication.badCredentialsException: Bad credentials
2013-04-11 15:47:26,426 DEBUG o.s.web.servlet.DispatcherServlet - Could not complete request
org.springframework.security.authentication.badCredentialsException: Bad credentials
@H_301_1@这种情况发生在调试模式中
@H_301_1@我的错误在哪里?@H_301_1@从登录控制器,您通常应该使用action =“j_spring_security_check”method =“post”来提供简单的登录表单.当用户提交该表单时,配置的安全筛选器(即UsernamepasswordAuthenticationFilter)将拦截该请求并处理身份验证.您不必在控制器方法中自己实现该逻辑.
@H_301_1@回复你的评论:
@H_301_1@您确实使用ProvideRMANager(它是自动连接的AuthenticationManager接口的实现).您犯的错误是您尝试重写已经实现的逻辑并在auth过滤器中进行彻底测试.这本身就很糟糕,但即使这样做也是错误的.您只需从复杂的逻辑中选择几行,除此之外您还会忘记例如调用会话策略(以防止会话固定攻击和处理并发会话).原始实现调用AuthenticationFailureHandler
同样,你也忘记了你的方法,这就是你原来问题的问题的原因.
@H_301_1@一个更基本的问题是,如果您实施RESTful服务,它是否真的是一个使用会话和基于表单的登录机制的好方法. (在基于表单的登录时,我的意思是客户端以任何格式发送其凭证一次,然后通过有状态会话对后续请求进行身份验证.)使用REST服务,保持所有无状态并重新验证每个新请求更为普遍通过http标头携带的信息.
以上是大佬教程为你收集整理的Spring自定义AuthenticationFailureHandler全部内容,希望文章能够帮你解决Spring自定义AuthenticationFailureHandler所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。