大多数情况下,我们在访问一个系统时,会直接访问我们收藏的某个页面,或者首页,又或者是访问根路径,成功登录系统后,一般情况下,会重定向到这些页面。如果并没有明确的目的指向,或者说我们想要让系统在登录成功后,一直指向某个页面怎么办?
其实,这很简单,很显然,Spring Security 也考虑到了这一点,在原配置基础上,添加一项 defaultSuccessUrl 配置即可。
http.formLogin().loginPage("/login").defaultSuccessUrl("/index").permitAll()
接下来,启动系统,分别用几种情况测试一下。
访问个人中心页面 http://localhost:8080/springsecuritylearning/user/index,登录后,系统跳转到了个人中心页面。
![c74d7f83bb68061b1b714b34e31be376.png](https://i-blog.csdnimg.cn/blog_migrate/661894e784eb2b85e4b296e62ff4cc75.jpeg)
查看Network标签,也确实是这样。
![226cebd79485fa28e06e10bdd3a24401.png](https://i-blog.csdnimg.cn/blog_migrate/5a4fecacdc00247e4a5c4bb41154c3b9.jpeg)
重启系统,或者清除浏览器缓存。
访问系统首页 http://localhost:8080/springsecuritylearning/index,系统跳转到了首页。
![886ee5bf29abcc8decf05f92231df098.png](https://i-blog.csdnimg.cn/blog_migrate/5cf3ac8d3bd6e309553b71cd1f63ad03.jpeg)
查看Network标签,也印证了这点。
接下来,访问系统根路径 http://localhost:8080/springsecuritylearning/,从原理上讲,应该跳转到根路径页面,由于系统配置访问根路径时,重定向到首页,所以,在用户成功登录后,会先重定向到根路径,然后又重定向到首页。
到此,可能还会有疑问,如果我要让系统不管什么情况,不管之前输入的什么地址,在成功登录后,都跳转到各自的个人中心、亦或是首页呢?
这个需求也很常见,比如,做自媒体的应该有感受,我们登录某个自媒体后台后,一般情况下,会直接跳转到后台的个人中心,展示一些统计信息,如粉丝数、收益等等。
Spring Security 也提供了这个配置项。
http.formLogin().loginPage("/login").defaultSuccessUrl("/user/index", true).permitAll()
重启系统后,再次尝试以上的几种情况,我们发现,系统果然会在登录成功后,始终跳转到个人中心页面。