结合Spring Security进行web应用会话安全管理

在本文中,将为大家说明如何结合Spring Security 管理web应用的会话。如果您阅读后觉得本文对您有帮助,期待您能关注、转发!您的支持是我不竭的创作动力!

一、Spring Security创建使用session的方法

Spring Security提供4种方式精确的控制会话的创建:

  • always:如果当前请求没有session存在,Spring Security创建一个session。
  • ifRequired(默认): Spring Security在需要时才创建session
  • never: Spring Security将永远不会主动创建session,但是如果session已经存在,它将使用该session
  • stateless:Spring Security不会创建或使用任何session。适合于接口型的无状态应用,该方式节省资源。

在Spring Security配置中加入session创建的策略。继承WebSecurityConfigurerAdapter ,重写configure(HttpSecurity http) 方法(为了方便移动端观看,我将下列代码非规范换行,一行中尽量简短)

@Overrideprotected void configure(HttpSecurity http) throws Exception { http.sessionManagement() .sessionCreationPolicy( SessionCreationPolicy.IF_REQUIRED )}

重要的是:该配置只能控制Spring Security如何创建与使用session,而不是控制整个应用程序。如果我们不明确指定,Spring Security可能不会创建session,但是我们的应用程序可能会创建session(一般spring应用的session管理交由Spring Session进行)!

二、会话超时管理

2.1 会话超时处理

会话超时之后,我们通常希望应用跳转到一个指定的URL,显示会话超时信息。可以使用如下的配置的代码实现。

 http.sessionManagement() //超时session跳转页面 .expiredUrl("/sessionExpired.html")  //非法session跳转页面 .invalidSessionUrl("/invalidSession.html"); 

2.2.会话超时时间配置

在Spring boot应用中有两种设置会话超时时间的方式,Spring Security对这两种方式完全兼容,即:当会话超时之后用户需要重新登录才能访问应用:

  • server.servlet.session.timeout=15m
  • spring.session.timeout = 15m

第一种方式是springBoot应用自带的session超时配置,第二种方式是我们使用Spring Session之后,提供的session超时配置。第二种方式的优先级更高。

三、Spring Security的会话固化保护

session-fixation-protection 即session的固化保护功能,该功能的目的是一定程度上防止非法用户窃取用户session及cookies信息,进而模拟session的行为。
默认情况下,Spring Security启用了migrationSession保护方式。即对于同一个cookies的SESSIONID用户,每次登录验证将创建一个新的HTTP会话,旧的HTTP会话将无效,并且旧会话的属性将被复制。

 http.sessionManagement() .sessionFixation().migrateSession()

如果这不是您需要的方式,则可以使用其他两个选项:

  • 设置为“none”时,原始会话不会无效
  • 设置“newSession”后,将创建一个干净的会话,而不会复制旧会话中的任何属性

四、Cookie的安全

熟悉Session实现原理的朋友一定都知道,提高Cookies的安全性,实际上就是提高session的安全性。在Spring Boot中可以通过配置方式来实现:

server.servlet.session.cookie.http-only=trueserver.servlet.session.cookie.secure=true
  • httpOnly:如果为true,则浏览器脚本将无法访问cookie
  • secure:如果为true,则仅通过HTTPS连接发送cookie,HTTP无法携带cookie。

springsecurity中session失效后怎样处理_结合Spring Security进行web应用会话安全管理相关推荐

  1. java session失效之后跳转_详解springmvc控制登录用户session失效后跳转登录页面

    springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml 15 第二步,配置spring-mvc.xml 第三步,写拦截器SystemSe ...

  2. jsp中session 失效设置

    jsp中session 失效设置 一般web系统都需要控制session自动失效的时间,从而控制用户访问系统超时.设置session失效有以下三种方式: 1.在主页面或者公共页面中加入:session ...

  3. 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。

    当session失效后,用户点击当前页面会跳到登录页面,如果用户现在是在子页面,则当前的子页面跳到登录,用户感觉很不好,所以进行处理,例得无论点击那个页面,都找到顶端页面,再跳到登录页面. 处理的方式 ...

  4. html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面

    一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...

  5. springsecurity sessionregistry session共享_不用 Spring Security 可否?试试这个小而美的安全框架...

    写在前面 在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题.用户的合法性与数据的可见性是数据安全中非常重要的一部分.但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别 ...

  6. 关于iframe中session 失效问题

    关于session 失效问题 解决了很多天 ,终于再最后完美解决了问题. 首先说一下走的坑,一开始iframe 丢失session解决方法是用nginx进行反向代理来解决这个问题 配置如下 serve ...

  7. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?

    前面和大家聊了 Spring Security 如何像 QQ 一样,自动踢掉已登录用户(Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户?),但是前面我们是基于单体应用的,如果我 ...

  8. spring 多租户_使用Spring Security的多租户应用程序的无状态会话

    spring 多租户 从前, 我发表了一篇文章,解释了构建无状态会话的原理 . 巧合的是,我们再次为多租户应用程序执行同一任务. 这次,我们将解决方案集成到Spring Security框架中,而不是 ...

  9. java oauth sso 源码_基于Spring Security Oauth2的SSO单点登录+JWT权限控制实践

    概 述 在前文<基于Spring Security和 JWT的权限系统设计>之中已经讨论过基于 Spring Security和 JWT的权限系统用法和实践,本文则进一步实践一下基于 Sp ...

最新文章

  1. OkHttp3 + retrofit2 封装
  2. Python基础-包
  3. libreoffice Error: source file could not be loaded
  4. jQuery滚动监听插件Waypoints
  5. Mongoose多数据库连接及实用样例
  6. mac 删除 Windows 或 EFI Boot 启动盘的方法
  7. ABBYY PDF Transformer+ 给你好看
  8. 双系统ubuntu无法进入_win10下安装ubuntu双系统
  9. 服务器 发布web项目路径,发布到 Web 平台
  10. 小天使幼儿园管理系统 免费
  11. Windows10系统迁移-同一PC硬盘之间
  12. 分享ZKEYS公有云分销系统部署详细教程
  13. 停用Windows Defender Antivirus Service内存
  14. BOX物联网盒子的作用和调试程序
  15. FBT熔融拉锥大芯径多模光纤耦合器简介
  16. 如何做好职业规划(乾卦)
  17. CString源代码
  18. 使用Feed43为网页生成RSS订阅源
  19. 【Python软件和第三方库国内地址】
  20. 星期四定律。散分!_星期四

热门文章

  1. python批量雷达图_python批量制作雷达图
  2. python方差分析模型的预测结果怎么看_statsmodels中方差分析表结果解析
  3. ruby 将日期转化为时间_Ruby中的日期和时间类
  4. c# uri.host_C#| Uri.EscapeUriString()方法与示例
  5. 面试突击 | Redis 如何从海量数据中查询出某一个 Key?视频版
  6. python3、sqlmap下载与安装教程
  7. 利用ASP.NET MVC 的默认类型绑定器---将Jquery datatables中的数据强类型绑定到实体类中
  8. 自适应阈值算法(大津阈值法)
  9. java 任意代码执行漏洞_php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)...
  10. python定时器 循环_python从写定时器学习Thread