前言 小编一直使用的是服务器的session,最近的项目,小编做成了前后端分离,遇到了一些问题: 所以这时候,小编就想到了使用token,来验证用户的合法性。 Token和session的区别 以上是小编认为Token和session之间的一些不同之处,所以小编觉得使用token比较方便。 JWT Token(JSON WEB TOKEN) 小编对于token的使用,是基于JWT的,因为这个标准也是比较主流的一种使用规范。JWT主要由三部分组成: 头部(header) JWT的头部主要由两部分信息组成: 下边的json,就是一个完整的头部信息: 我们将这个头部信息使用base64加密,就得到了我们JWT的第一部分信息了: 载荷(payload) 主要有三部分组成:标准中注册的声明、公共的声明、私有的声明。 标准中注册的声明: 自定义的声明 用户自己添加的一些信息,比如用户姓名、手机号等一些不敏感信息。 我们来看看一个完整的载荷(payload)的json数据: 我们继续将这个载荷(payload)信息使用base64加密,就得到了我们JWT的第二部分信息了: 签证(sign) 前边我们已经获取到了头部信息的base64和载荷的base64的信息了,现在我们需要用这两个信息,生成一个签证(sign),这就是我们需要的第三部分信息了: 最后,我们将这三部分连接起来,就是我们需要的JWT了: 前端请求 将token放入到header里边的Authorization中,作为验证,如: 优点 不足 建议{ "typ" "JWT", "alg" "HS256"}
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
{ "iss" 'jt' "sub" "13011912019", "exp" "1530000000", "iat" "1529000000", "jti" "638069ab7a97771edcb91180f491d01e", "nickname" "kafei", "avatar" "oy98jbaeobktclouddnavatar-1532401501"}
eyJpc3MiOiJqd3QiLCJzdWIiOiIxMzAxMTkxMjAxOSIsImV4cCI6IjE1MzAMDAMDAiLCJpYXQiOiIxNTI5MDAMDAIiianRpIjoiNjM4MDY5YWI3YTk3NzcxZWRjYjkxMTgZjQ5MWQMWUiLCJuaWNrbmFtZSI6ImthZmVpIiiYXZhdGFyIjoiaHR0cDovL295OThqYmFlby5ia3QuY2xvdWRkbi5jb20vYXZhdGFyLTE1MzI0MDE1MDEifQ
?php$header = '{"typ" "JWT","alg" "HS256"}';$payload= '{"iss" "jt","sub" "13011912019","exp" "1530000000","iat" "1529000000","jti" "638069ab7a97771edcb91180f491d01e","nickname" "kafei","avatar" "oy98jbaeobktclouddnavatar-1532401501"}'; 使用拼接,header在前,payload在后$encodedString = base64UrlEncode($header) '' base64UrlEncode($payload); 私密字符$salt = 'kafei'; 签名$sign= HS256($encodedString $salt); 这里使用随机一段字符代替 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 注意,PHP小编没找到HS256的加密,都是sha256的加密,后面小编有时间的话,会去写写这个 网上有现成的 JWT 库,大家可以去下载看看 PHP 的 JWT 库的 GIT 地址:sgithublcobuccijt?
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9eyJpc3MiOiJqd3QiLCJzdWIiOiIxMzAxMTkxMjAxOSIsImV4cCI6IjE1MzAMDAMDAiLCJpYXQiOiIxNTI5MDAMDAIiianRpIjoiNjM4MDY5YWI3YTk3NzcxZWRjYjkxMTgZjQ5MWQMWUiLCJuaWNrbmFtZSI6ImthZmVpIiiYXZhdGFyIjoiaHR0cDovL295OThqYmFlby5ia3QuY2xvdWRkbi5jb20vYXZhdGFyLTE1MzI0MDE1MDEifQeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
fetch('apiuser1', { headers { 'Authorization' 'Bearer ' + token }})
什么是token机制?(JWT主要由三部分组成):服务器地址大小怎么查看
服务器地址大小怎么查看描述::