ThinkPHP6 JWT封装
首先composer引入JWT安装
composer require firebase/php-jwt
<?php
namespace app\api\business;
use app\BaseController;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\JWT as JWTUtil;
use Firebase\JWT\Key;
class Jwt extends BaseController
{
    /**
     * 根据json web token设置的规则生成token
     * @return \think\response\Json
     */
    public static function createjwt($id)
    {
        //jwt的签发密钥,验证token的时候需要用到
        $key = md5('pyg'); 
        //签发时间
        $time = time();
        //过期时间
        $expire = $time + 14400; 
        $token = array(
            "user_id" => $id,
            "iss" => "http://www.pyg.com/",//签发组织
            "aud" => "thinkphp", //签发作者
            "iat" => $time,
            "nbf" => $time,
            "exp" => $expire
        );
         $jwt = JWTUtil::encode($token,$key,'HS256');
        return $jwt;
    }
    /**
     * 验证token
     * @return \think\response\Json
     */
    public static function verifyjwt($token)
    {
        $key = md5('pyg'); //jwt的签发密钥,验证token的时候需要用到
        try{
            $jwtAuth = json_encode(JWTUtil::decode($token, new Key($key, 'HS256')));
            $authInfo = json_decode($jwtAuth,true);
            if (!$authInfo['user_id']){
                return "用户不存在";
            }
            return "ok";
        }catch (ExpiredException $e){
            return "token过期";
        }catch (\Exception $e){
            return $e->getMessage();
        }
    }
//    从请求信息中获取token令牌
    public static function getRequestToken()
    {
        if (empty($_SERVER['HTTP_AUTHORIZATION'])) {
            return false;
        }
        $header = $_SERVER['HTTP_AUTHORIZATION'];
        $method = 'bearer';
        //去除token中可能存在的bearer标识
        return trim(str_ireplace($method, '', $header));
    }
}如果获取不到头信息
在public下的.htaccess中加入以下代码
<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
 
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  #增加如下内容
  SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
</IfModule> 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号