问题:今天拿security做权限控制的时候,出现了特别灵异的一幕,security配置类写好了,正常登录的情况下,第一次登陆,登陆成功后总会莫名其妙重定向到项目的根路径,但是确实已经登陆成功了,访问主页可以进行访问了。
问题如图所示,打码部分为项目根路径。
配置类配置登陆成功后转向的是一个action,如图所示
具体解决过程十分坎坷,省略了
重点感谢一个大佬给我提了一句,我这个有可能不是重定向到首页,而是重定向到登录前的页面了。
经检查后发现产生这个问题的原因是我项目启动默认访问路径就是
http://localhost:8888/projectName/ projectName代表项目名字 出于隐私考虑不放实际项目名
确实重定向的就是这个链接,看了一下源码发现defaultSuccessUrl里面有一个重载方法
// 第二个参数就是代表是否强制转向修改后url
public final T defaultSuccessUrl(String defaultSuccessUrl, boolean alwaysUse) {
SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler();
handler.setDefaultTargetUrl(defaultSuccessUrl);
handler.setAlwaysUseDefaultTargetUrl(alwaysUse);
return this.successHandler(handler);
}
解决方案:在配置类中defaultSuccessUrl中加上第二个参数 一个true即可 问题解决
如图:
注:如果使用配置文件方式配置的话 配置always-use-default-target即可
新的一年 bug减半 耶!