> 文章列表 > 【SpringBoot】1、SpringBoot整合JWT实现Token验证

【SpringBoot】1、SpringBoot整合JWT实现Token验证

【SpringBoot】1、SpringBoot整合JWT实现Token验证

这里写目录标题

  • 1.单点登录
    • 1.1 单系统登录
      • 1.1.1 单系统登录流程(使用Session实现单系统登录)
    • 1.2 多系统(单点)登录

1.单点登录

单点登录(Single Sign On), 简称为SSO, 是目前比较流行的企业业务整合的解决方案之一.

SSO的定义:在多个应用系统中, 用户只需要登录一次就可以访问所有相互信任的应用系统, 企业间需要相互授信


1.1 单系统登录

众所皆知, HTTP是无状态的协议, 这意味着服务器无法确认用户的信息。 于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie。

如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户明细表”。
【SpringBoot】1、SpringBoot整合JWT实现Token验证


1.1.1 单系统登录流程(使用Session实现单系统登录)

一、登录
用户登录成功后, 通过request获取Session(本质是根据Cookie中携带的JSESSIONID寻找Session)
【SpringBoot】1、SpringBoot整合JWT实现Token验证

  • 如果没有携带JSESSIONID或者JSESSIONID找不到Session, 说明用户未登录, 此时将用户信息保存到Session对象中(默认会以Cookie方式向客户端返回JSESSIONID, 但此JSESSIONID是会话级别的)
  • 如果Session能找到, 说明当前用户已经登录

二、记住我(关闭掉浏览器后,重新打开浏览器还能保持登录状态)
因为默认返回的JSESSIONID是会话级别的, 我们可以手动为Cookie中添加JSESSIONID信息,设置Cookie的过期时间, 此时不管你的浏览器是否关闭,Cookie中都会携带JSESSION信息

//登录成功后,手动添加cookie,保存JSESSIONID信息
Cookie cookie = new Cookie("JSESSIONID", session.getId());
//300年后过期(永久有效)
cookie.setMaxAge(60 * 60 * 24 * 30 * 12 * 300); //设置cookie 和 session生命周期同步.
response.addCookie(cookie);

三、注销(退出登录):从Session中删除用户的信息

 session.removeAttribute("user");

1.2 多系统(单点)登录

多系统、单一位置登录, 实现多系统同时登录的一种技术