spring security下开启csrf,同时支持session.invalidate()调用

在Java Web项目中,配置Spring Security启用CSRF防御时,遇到HTTPS与HTTP切换导致的session问题。当用户身份验证成功并跳转到HTTP时,由于session变化,新的session缺少CSRF Token引发403错误。解决方案是在验证成功后的跳转action中更新session。此外,为应对session ID更新需求,可能需要修改Spring Security源码,确保在filterChain执行后重新添加CSRF Token到session。
摘要由CSDN通过智能技术生成

最近在做的一个java web项目,要求登录界面信息提交时使用https,登录成功后页面使用http,同时全站使用csrf防御。

然后https和http的访问会分别创建两个session,csrf的token存在于https创建的session中,当验证用户身份通过后,跳转到http进入时,新建的session中没有csrfToken,因此被403拒绝访问。

解决方法为:在身份验证成功后,跳转页面的action中加入

Cookie nck = new Cookie("JSESSIONID",request.getSession().getId());
			nck.setPath("/");
			nck.setSecure(true);
			response.addCookie(nck);
这样就可以保证跳转前后的session保持一致了。


但新的需求又来了:在某些action处理过程中,需要更新session id,可以参考《spring security 集成csrf与会话更新》,也可以修改spring security源码。

spring security的CsrfFilter.java文件中,在filterChain执行完回调后,再添加一次token到session中即可:

@Override
	protected void doFil
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值