JWT实现原理,php实现JWT实例

JWT描述

  1. JWT 全程(json web token)
  2. JWT 就是一个字符串,经过加密处理与校对处理的字符串
  3. JWT 由header(头部),payload(主体),signature(签名)三部分组成
  4. JWT 组成形式 base64UrlHeader.base64UrlPayload.base64Url(hash(base64UrlHeader.base64UrlPayload))
  5. 生成样式:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

header组成

{
   
	"typ":"JWT",
	"alg":"HS256"
}
  • alg:加密算法
  • typ:默认JWT

payload组成(内容自定义)

{
   
	'alg' => 'sha256',//验证加密算法是否跟使用的一致
	'iat' => $dataTime,//签发时间
	'exp' => $dataTime + 6,//过期时间
	'username' =>'admin',//用户账号
}

signature组成

base64Url(hash(base64UrlHeader.base64UrlPayload))

JWT流程

  1. 初次登录:用户初次登录,输入用户名密码
  2. 密码验证:服务器从数据库取出用户名和密码进行验证
  3. 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT
  4. 还JWT:服务器的HTTP RESPONSE中将JWT返还
  5. 带JWT的请求:以后客户端发起请求,HTTP REQUEST HEADER中的Authorizatio字段都要有值,为JWT

JWT代码实现:获取token,验证token

class JwtByPhp
{
   
	private static $secret = '!@#$%^&'; //密钥 俗称盐
	//头部
	private static $header = [
		'alg' => 'sha256', 	//加密使用算法
		'typ' => 'JWT'		//类型
	];
	
	
	/**
	* 获取对应token信息
	* @param {object} payload 主体内容
	* 
	* @return
	*/
	public static function getToken(array $payload)
	{
   
		if(is_array($payload)){
   
			//第一步将头部数组转换成json字符串,将传递过来的内容转成json字符串
			$jsonHeader = json_encode(self::$header,JSON_UNESCAPED_UNICODE);//中文不转为unicode
			$jsonPayload = json_encode($payload,JSON_UNESCAPED_UNICODE);
			//第二步进行base64Url加密
			$base64UrlHeader 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值