jwt token

token是json web token (鉴权), 主要是解决会话保持.

cookie和session相同点: 都是k/v格式

cookie:

    1. 保存在浏览器(客户端),
    1. Cookie 是不安全的,是明文
    1. 默认有效期14天, 默认大小4k

sesesion:

1. sessionid 对应的数据保存在服务端, sessionID是服务端生成,返回给客户端,让浏览器保存, 一般浏览器会保存在cookie中(key:value)

2. 相对安全, 加密的
3. Session 是根据设定的, 默认无限制,根据服务器的性能决定

使用session时会有一个session共享的问题?  可以使用redis实现数据共享, 但是需要配置; 6亿**1k=600g           500m

2. TOKEN

   1. header:

      包含是: token的标识, 要使用的加密算法(HS256)

   2. Payload(载荷)

      用户信息, 但是不能存放敏感信息(比如密码)

   3. 签证

      用来加密的, 把前两部分使用base64编码后的字符串,进行拼接然后再使用header中声明的加密算法进行加密, 加密时还需要一个随机数(“盐”,salt)把第三部分和前两部分再次加密成第三部分, 然后再和前两部分进行拼接

### JWT Token 的基本概念 JSON Web Token (JWT) 是一种开放标准 (RFC 7519),用于在网络应用环境间安全地传输信息。它是一种紧凑、可自包含的方式,能够传递声明(Claims),这些声明通常被用来在各方之间交换认证和授权信息[^1]。 JWT 结构由三部分组成:Header(头部)、Payload(载荷)以及 Signature(签名)。每一部分都通过 Base64 编码连接在一起形成最终的 Token 字符串: - **Header**: 描述令牌的元数据,包括加密算法类型。 - **Payload**: 存储实际的数据或声明,分为注册声明(Registered Claims)、公共声明(Public Claims)和私有声明(Private Claims)。 - **Signature**: 使用 Header 和 Payload 数据生成的一个哈希值,确保 Token 不会被篡改。 ### JWT Token 的实现方式 #### 创建 JWT Token 创建一个 JWT Token 需要指定密钥并定义有效期限等参数。以下是基于 Java Spring Boot 平台的手动实现示例[^3]: ```java import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; public class JwtUtil { private static final String SECRET_KEY = "yourSecretKey"; public static String createToken(String userId, String password) { return Jwts.builder() .setSubject(userId) .claim("password", password) .signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes()) .compact(); } } ``` 上述代码片段展示了如何利用 `Jwts` 库构建一个简单的 JWT Token。其中 `.setSubject()` 方法设置主题字段,`.claim()` 添加额外的信息作为负载的一部分,最后调用 `.signWith()` 来签署该 Token。 #### 解析与验证 JWT Token 解析接收到的 Token 可以帮助确认其合法性,并提取存储在其内部的有效信息: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; public class JwtUtil { public static Claims parseToken(String token) throws ExpiredJwtException{ try { return Jwts.parser() .setSigningKey(SECRET_KEY.getBytes()) // 设置相同的密钥进行校验 .parseClaimsJws(token).getBody(); // 返回 payload 中的内容 } catch(ExpiredJwtException e){ throw new RuntimeException("Token 已过期"); } } } ``` 此方法尝试解析传入的 Token 如果失败则抛出异常表明 Token 失效或者不合法[^2]。 ### 总结 JWT 提供了一种轻量级机制,在分布式系统架构下特别适合处理用户会话状态管理等问题。无论是前端还是后端都可以轻松集成这种技术方案完成相应的功能需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值