今天想不明白,我控制层写了一个登录的接口。结果验证成功了,我发现AuthenticationSuccessHandler 没有调用 ,而且也不生效啊,最后研究终于发现是因为我们需要配置登录的url 这个url 我们访问,中间的什么控制器什么的框架有自己的处理,我们访问这个url ,框架自动调用认证,认证成功才走这个成功接口类,中间失败就走失败的接口类。异常走对应的异常接口类。
解决方法:
-
loginPage("/login/page")
方法指定了登录页面的 URL。在这个例子中,登录页面的 URL 是 "/login/page"。 -
loginProcessingUrl("/login")
方法指定了处理登录表单提交的 URL,也就是提交用户名和密码的表单被提交到哪个 URL。在这个例子中,登录表单的提交 URL 是 "/login"。 -
当我们访问/login 必须用post 方法访问,而且还要代码认证所需要的字段(你自己的认证方法),框架自动用你提交的参数去认证,认证成功才会走后面是sucessHandler 的方法
//loginPage("/login/page") 方法指定了登录页面的 URL。在这个例子中,登录页面的 URL 是 "/login/page"。
//loginProcessingUrl("/login") 方法指定了处理登录表单提交的 URL,也就是提交用户名和密码的表单被提交到哪个 URL。在这个例子中,登录表单的提交 URL 是 "/login"。
http.formLogin().loginPage("/login/page").loginProcessingUrl("/login").successHandler(authSucessHandler).failureHandler(authFailureHandler);
如果同时控制器也有一个/login的post 请求的方法,那么会用框架自己的验证,走sucesshandler的处理器,不走我们的控制器。
至于第一个/login/page这个是一个页面的url 我的是前后端分离项目,我不知道要还是要的好,我不知道