jwt的学习

jwt的学习

  • JWT

JWT

真是越来越讨厌写前端代码了呢 尤其是CSS 好在现在是个前后端分离的时代,后端同学也想写优雅的代码~

用户登录鉴权认证

先安装php-jwt

composer require firebase/php-jwt

项目是基于TP5的thinkcmf
随便新建一个控制器

namespace app\portal\controller;

use cmf\controller\HomeBaseController;
use \Firebase\JWT\JWT;

class IndexController extends HomeBaseController
{

    public function index()
    {
        return $this->fetch(':index');
    }

    public function ok()
    {
        $key   = '1234';
        $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 + 30, //过期时间,这里设置2个小时
            'data' => [ //自定义信息,不要定义敏感信息
                'userid'   => 1,
                'username' => '李小龙',
            ],
        ];

        $jwt = JWT::encode($token, $key);
        echo $jwt;
    }

    public function jiemi()
    {
        $key = '1234';
        $jwt = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC93d3cuaGVsbG93ZWJhLm5ldCIsImF1ZCI6Imh0dHA6XC9cL3d3dy5oZWxsb3dlYmEubmV0IiwiaWF0IjoxNTQwODgxOTIxLCJuYmYiOjE1NDA4ODE5MjEsImV4cCI6MTU0MDg4MTk1MSwiZGF0YSI6eyJ1c2VyaWQiOjEsInVzZXJuYW1lIjoiXHU2NzRlXHU1YzBmXHU5Zjk5In19.glzdcp-ICWOBMVLUwmnQ4SNBBIXHMVjSm3YiNKKPK8c';
        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();
        }
    }
}

继续学习

你可能感兴趣的:(Thinkcmf)