单点登陆_在微服务项目中使用jwt+redis实现单点登陆

本文介绍了如何在基于Vue和Spring Cloud的微服务项目中使用JWT和Redis实现单点登录(SSO)。内容涵盖JWT的工作原理、JWT的组成部分,以及在前端Vue和后端Spring Boot中设置JWT的详细步骤,包括创建和解析token、配置过滤器、处理认证等。同时,还讨论了JWT相对于Session的优势,并提供了前端和后端的关键代码示例。
摘要由CSDN通过智能技术生成

68ddde03f5c04de0c9146bb49deae983.png
何为jwt?

JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

为何要使用jwt+redis的形式来鉴权

token长什么样?

eyJhbGciOiJIUzI1NiJ9.eyJhZG1pbk5hbWUiOiIxODc4MzAxNzU2OSIsInN1YiI6IjE4NzgzMDE3NTY5IiwiZXhwIjoxNTk3NTQ0NzU2LCJEYXRlIjoxNTk3NTQxMTU2Njc3fQ.uW2SpYZw7SRKxG966vORWF7lqOKLt0ZZVnGu-Gsi894

第一部分叫头部(header), 第二部分叫载荷(payload), 第三部分叫签证(signature)

因此,JWT通常如下所示。

xxxxx.yyyyy.zzzzz

官网介绍:

头部(header)

头部通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法,例如HMAC SHA256或RSA。

例如:

{
  "alg": "HS256",
  "typ": "JWT"
}

然后,此JSON被Base64Url编码以形成JWT的第一部分。

载荷(payload)组成部分:

{
  "sub": "1234567890",
  "name": "NILIUSHIGUANG",
  "admin": true
}

签证(signature)

要创建签名部分,您必须获取编码的标头,编码的有效负载,机密,标头中指定的算法,并对其进行签名。

例如,如果要使用HMAC SHA256算法,则将通过以下方式创建签名:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

将三者放在一起

输出是三个由点分隔的Base64-URL字符串,可以在HTML和HTTP环境中轻松传递这些字符串,与基于XML的标准(例如SAML)相比,它更紧凑。

相对session,jwt有什么优点?

jwt的验证机制比session的验证机制更加灵活方便。

耦合度更低。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.

Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息。

项目鉴权流程

a278b28c9206a11a502879349e69b0e0.png

1.用户访问vue页面

2.前端判断页面是否需要验证权限

如果页面需要验证权限,则判断前端是否存在token,token不存在则跳转到登陆页

3.访问接口

后端判断接口是否需要鉴权

否:则直接调用接口

是:则通过token鉴权过后才能调用接口

技术准备

前端:vue+elementui

后端:springcloud+springboot+mybatisplus+redis+zookeeper+jw

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值