【springsecurity6】关于重定向次数过多的延伸验证loginProcessingUrl(““)

项目场景:

设置了loginProcessingUrl(“/toLogin”),不走controller的(“/toLogin”)逻辑


问题描述

通过debug发现,在设置了loginProcessingUrl(“/toLogin”)之后,实际登陆认证时不会跳转到(自己写的/toLogin)controller里面,而是进入springsecurity框架里面,从框架里面代码中,完成了验证和跳转(验证不会使用自己定义的login方法),这一动作不执行对应controller里面的代码。认证成功之后,一般会重新进入登陆之前 要进入的页面接口(Referer 来源页面),继续执行
在这里插入图片描述
图中最开始要进入的网址:http://localhost:8080/8,被框架拦截,进入登陆认证页面/toLogin,认证成功之后会放行,也就是继续执行http://localhost:8080/8该接口controller的内容


基础知识:

defaultSuccessUrl和successForwardUrl区别

defaultSuccessUrl 有一个重载的方法,如果我们在 defaultSuccessUrl 中指定登录成功的跳转页面为 /index,此时分两种情况,如果你是直接在浏览器中输入的登录地址,登录成功后,就直接跳转到 /index,如果你是在浏览器中输入了其他地址,例如 http://localhost:8080/8,结果因为没有登录,又重定向到登录页面,此时登录成功后,就不会来到 /index ,而是来到 /8 页面。

defaultSuccessUrl 就是说,它会默认跳转到 Referer 来源页面,如果 Referer 为空,没有来源页,则跳转到默认设置的页面。
successForwardUrl 表示不管你是从哪里来的,登录后一律跳转到 successForwardUrl 指定的地址。
defaultSuccessUrl 另外一个重载方法,第二个参数如果输入为 true,则效果和 successForwardUrl 一致。

successForwardUrl 指定的地址为 /index ,你在浏览器地址栏输入 http://localhost:8080/codedq,如果你还没有登录,将会重定向到登录页面,当你登录成功之后,就会服务端跳转到 /index 页面;或者你直接就在浏览器输入了登录页面地址,登录成功后也是来到 /index。


解决方案:

两种方案

有两种方式:

  • 设置loginProcessingUrl,defaultSuccessUrl,不走controller
  • springsecurityConfig配置类不设置,通过走controller

方法1:

.formLogin(form -> form.loginPage
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值