php firebase/php-jwt token验证

  1. JWT于各服务器、客户端传递信息签名验证。
  2. 服务端签发Token
use \Firebase\JWT\JWT; //导入JWT
class MainController extends Controller
{

	//签发Token
	public function lssue()
	{
		$key = '344'; //key
		$time = time(); //当前时间
       		$token = [
        	'iss' => 'http://www.helloweba.net', //签发者 可选
           	'aud' => 'http://www.helloweba.net', //接收该JWT的一方,可选
           	'iat' => $time, //签发时间
           	'nbf' => $time , //(Not Before):某个时间点后才能访问,比如设置time+30,表示当前时间30秒后才能使用
           	'exp' => $time+7200, //过期时间,这里设置2个小时
            	'data' => [ //自定义信息,不要定义敏感信息
             		'userid' => 1,
               		'username' => '李小龙'
            ]
        ];
        echo JWT::encode($token, $key); //输出Token
	}
}
  1. 解析Token
use \Firebase\JWT\JWT; //导入JWT
class MainController extends Controller
{

	public function verification()
	{
		$key = '344'; //key要和签发的时候一样

		$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC93d3cuaGVsbG93ZWJhLm5ldCIsImF1ZCI6Imh0dHA6XC9cL3d3dy5oZWxsb3dlYmEubmV0IiwiaWF0IjoxNTI1MzQwMzE3LCJuYmYiOjE1MjUzNDAzMTcsImV4cCI6MTUyNTM0NzUxNywiZGF0YSI6eyJ1c2VyaWQiOjEsInVzZXJuYW1lIjoiXHU2NzRlXHU1YzBmXHU5Zjk5In19.Ukd7trwYMoQmahOAtvNynSA511mseA2ihejoZs7dxt0"; //签发的Token
		try {
	       		JWT::$leeway = 60;//当前时间减去60,把时间留点余地
	       		$decoded = JWT::decode($jwt, $key, ['HS256']); //HS256方式,这里要和签发的时候对应
	       		$arr = (array)$decoded;
	       		print_r($arr);
	    	} catch(\Firebase\JWT\SignatureInvalidException $e) {  //签名不正确
	    		echo $e->getMessage();
	    	}catch(\Firebase\JWT\BeforeValidException $e) {  // 签名在某个时间点之后才能用
	    		echo $e->getMessage();
	    	}catch(\Firebase\JWT\ExpiredException $e) {  // token过期
	    		echo $e->getMessage();
	   	}catch(Exception $e) {  //其他错误
	    		echo $e->getMessage();
	    	}
	    //Firebase定义了多个 throw new,我们可以捕获多个catch来定义问题,catch加入自己的业务,比如token过期可以用当前Token刷新一个新Token
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一种基于JSON的安全令牌,由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 在PHP中使用JWT进行登录验证的步骤如下: 1. 安装依赖:使用Composer安装`firebase/php-jwt`库,该库提供了JWT的相关功能。 2. 生成Token:在用户登录成功后,服务器可以生成一个JWT Token并返回给客户端。生成Token的过程包括设置有效载荷信息、设置过期时间、设置密钥等。 ```php use \Firebase\JWT\JWT; // 设置有效载荷信息 $payload = array( "user_id" => $user_id, "username" => $username ); // 设置过期时间 $expiration_time = time() + 3600; // 1小时后过期 // 设置密钥 $secret_key = "your_secret_key"; // 生成Token $token = JWT::encode($payload, $secret_key); ``` 3. 验证Token:在客户端发送请求时,将Token放在请求头或请求参数中。服务器接收到请求后,需要验证Token的有效性和完整性。 ```php use \Firebase\JWT\JWT; // 获取Token $token = $_SERVER['HTTP_AUTHORIZATION']; // 设置密钥 $secret_key = "your_secret_key"; try { // 验证Token $decoded = JWT::decode($token, $secret_key, array('HS256')); // Token验证通过,可以获取有效载荷信息 $user_id = $decoded->user_id; $username = $decoded->username; } catch (Exception $e) { // Token验证失败 // 处理验证失败的逻辑 } ``` 以上是使用PHP进行JWT登录验证的基本步骤。通过JWT,服务器可以生成一个安全的Token,并在每次请求时验证Token的有效性,从而实现用户身份的验证和授权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值