JWT (JSON Web Token) 和 Token 都是用来在用户和服务器之间传输信息的机制。但它们之间还是存在一些重要的区别。
Token:
Token通常是服务端生成的一串字符串,作为客户端请求的标识,因为HTTP协议是无状态的,当客户端通过用户名和密码请求服务器时,服务器根据验证结果回应一个Token,再由客户端保存,之后客户端的每次请求都会携带这个Token值,服务器只需要验证这个Token值就可以确认客户端的身份。
总的来说,Token是登录凭证,可以是任意字符串,常被用来验证用户身份和授权信息。
JWT (JSON Web Token):
JWT是Token的一种实现方式,它用JSON封装了Token信息,然后再进行加密。
JWT通常由三部分组成:头部(header),载荷(payload),签名(signature)。
- 头部(header)存放token的类型,通常使用"JWT",以及加密的算法名称。
- 载荷(payload)存放实体,也就是需要传递的数据。JWT的标准定义包括一些预定义的字段,用来在各个不同的系统之间传递公共信息。例如,iat(签发时间),exp(过期时间),sub(主题),aud(受众)等。
- 签名(signature)是对前两部分的签名,防止数据被篡改。
总的来说,JWT是Token的一种,关键在于它标准化了一套可以跨语言的Token生成和验证方式。
区别:
- JWT自身包含验证信息,比如签名,而Token则需要服务器进行验证。
- JWT格式固定,可包含多种信息,而Token格式不固定,只需要包含基本的唯一性信息即可。
- 由于JWT的载荷部分默认是没有加密的,所以不建议将敏感信息放在载荷部分。