关于SpringSecurity配置中的一些问题解决(登录页面不跳转,报错302)

1.为何在自定义的登录页面中登录完页面不跳转?

主要是SpringSecurity在校验csrf跨域时候,会传一个csrf相关的随机token值!

在SpringSecurity 4 之后,其csrf默认是开启的,在配置中将其关闭就可以解决。

这行代码写在webSecurityConfig方法中最上边。(写在最后自测也可以)

当然关闭csrf是不可取的,因为这样就会面临csrf的攻击。

以下还有三种解决办法(查了好久,都不能用,最终还是看的spring实战这本书知道了为啥。272页9.4认证用户)

(1).采用官方提供的登陆模板,因为人家这里抽象服务器传递了csrf相关的token值

(2).采用freemark模板(官方建议)或者themeleaf模板(官方建议),那么在form表单的跳转路径就携程下图的格式:th:action="@{/login...}"

(3).采用jsp模板,并且加上一行代码

不过切记这个重写的表单页面必须用jsp模板!!!!!!!不然是不会有用的

当然现在spring框架不建议使用jsp模板

2.formLogin表单登录的配置

其中loginPage()中的路径就是自定义的登录页面

后面的loginProcessingUrl("/login/form")中的"/login/form"是自定义登陆页面中的表单提交action

(注意这个实在jsp模板下的代码!!!!)

这两处需要保持一致

为什么需要配置这个呢?

因为在自定义的登陆页面中,表单进行提交用户输入的用户名与密码,这个请求实在SpringSecurity中是由UsernamePasswordAuthenticationFilter过滤器来处理的,看他的源码

它处理的路径为login的post请求,而我们自定义的表单登录页面提交路径改变了,这里就需要将这个改变告诉给SpringSecurity,这样做的好处是就不需要重写一个Controller来处理了。当然处理验证用户名密码的操作代码还需要我们自己来写

下边截图只是简单的一个demo

3.默认的用户在进行登录验证前是哪个页面,验证成功后会将继续操作。但是如果想让验证成功后跳转到指定的页面,则需要这两个方法

两者选其一就行

但是需要注意的是successForwardUrl(),路径不能为"/",不能为空,因为

而且请求必须是post请求!!!

而defaultSuccessUrl(),设置跳转路径后需要加true,不然默认是false,不会生效!

 
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据提供的引用内容,你遇到的问题是在使用Spring Security提交表单时出现了302错误。302错误是重定向错误,表示请求的资源已经被临时移动到了另一个位置。在Spring Security,当用户提交表单进行身份验证时,如果验证成功,系统会将用户重定向到之前请求的页面,而不是返回200状态码。 要解决这个问题,你可以检查以下几个方面: 1. 确保表单的提交地址正确。在Spring Security,表单的默认提交地址是`/login`,你可以在配置文件进行自定义配置。 2. 检查表单的提交方式是否正确。默认情况下,Spring Security使用POST方法进行表单提交,你需要确保表单的提交方式与配置文件的一致。 3. 检查登录成功后的重定向地址是否正确。在Spring Security,默认的登录成功后的重定向地址是之前请求的页面,你可以在配置文件进行自定义配置。 4. 检查是否存在其他的拦截器或过滤器导致了重定向。有时候,其他的拦截器或过滤器可能会干扰Spring Security的正常流程,导致出现302错误。你可以检查是否存在其他的拦截器或过滤器,并进行相应的调整。 5. 检查是否存在其他的配置问题。如果以上步骤都没有解决问题,你可以检查其他的配置项,例如用户认证的配置、权限配置等。 下面是一个示例的Spring Security配置文件,你可以参考其配置项进行调整: ```yaml spring: security: user: name: yyg password: 123 form: login-page: /login login-processing-url: /doLogin default-target-url: /home failure-url: /login?error=true ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值