Spring Security 中 defaultSuccessUrl 和 successForwardUrl 的区别

JAVA herman 1019浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:codedq,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:codedq,之前的微信号好友位已满,备注:返现
饿了么大量招人,我内推!Java 方向!薪资不设上限,工作年龄不限!工作地点限魔都,可电话面试!简历,发我微信:codedq
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

这两天有一个自称 Spring Security 大神的人在群里给大家交流 Security,说自己出过书,读过源码。然后我出了一个问题,defaultSuccessUrl 和 successForwardUrl 有什么区别?

结果他回答错了,不排除他记错的可能。吓的我刚又看了一下源码,这里记录一下,方便新手快速入门!

其实我们通过 defaultSuccessUrl 和 successForwardUrl 的字面意思都能够理解他们的作用。

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

defaultSuccessUrl 就是说,它会默认跳转到 Referer 来源页面,如果 Referer 为空,没有来源页,则跳转到默认设置的页面。

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

defaultSuccessUrl 另外一个重载方法,第二个参数如果输入为 true,则效果和 successForwardUrl 一致。

一般来说,我们使用 defaultSuccessUrl 就够了。而且体验也比较好,特殊情况下,我们才使用 successForwardUrl。

上面这些知识都可以在源码中找到,保持好奇心,才能不断的进步和成长!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号1:xmtxtt(5000人已满),微信号2:xttblog(5000人已满),微信号3:codedq(超3800)。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Spring Security 中 defaultSuccessUrl 和 successForwardUrl 的区别