thinkphp6使用jwt

摘要:
@#$%*&';// 这是一个用户定义的随机字符串,应该写入配置文件中。它也可以用于解密,这相当于salt$nowtime=time(),通常用于加密;回声。'';/*Iss:jwt签名者sub:jwt目标用户aud:exp:jwt到期时间,接收jwt的一方。过期时间必须大于发出时间nbf:定义jwt不可用的时间Iat:jwt的发出时间jti:jwt的唯一标识,它主要用作一次性令牌以避免重放攻击。
public function jwt()
    {
        $key='!@#$%*&';         //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当    于加密中常用的 盐  salt
        $nowtime = time();
        echo ($nowtime+100).'<hr />';
        /*
        iss: jwt签发者
        sub: jwt所面向的用户
        aud: 接收jwt的一方
        exp: jwt的过期时间,这个过期时间必须要大于签发时间
        nbf: 定义在什么时间之前,该jwt都是不可用的.
        iat: jwt的签发时间
        jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
        */
        $token=array(
            "iss"=>$key,        //签发者 可以为空
            "aud"=>'',          //面象的用户 可以为空
            "iat"=>$nowtime,      //签发时间
            "nbf"=>$nowtime+3,    //在什么时候jwt开始生效
            "jti"=>md5(uniqid('JWT').time()),    //该Token唯一标识
            "exp"=> $nowtime+100, //token过期时间
            "data"=>[           //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
                'uid'=>3301,
            ]
        );
        $jwt = JWT::encode($token, $key, "HS256");  //根据参数生成了 token
        echo $jwt;
    }

    //验证token
    function checkToken(){
        $token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIhQCMkJSomIiwiYXVkIjoiIiwiaWF0IjoxNjI2NzA2NzgxLCJuYmYiOjE2MjY3MDY3ODQsImp0aSI6ImE0YmE2YTE5NzlkNjcyMDFlOGM1YjQxOWExNjI2ZmUxIiwiZXhwIjoxNjI2NzA2ODgxLCJkYXRhIjp7InVpZCI6MzMwMX19.LZI8WfvNA_tqkE9Nop35Doa-wWw4R_ZQlsiZn50Un7w';
        $key='!@#$%*&'; 
        $status=array("code"=>2);
        try {
            JWT::$leeway = 60;//当前时间减去60,把时间留点余地,避免多服务器时间有误差,设置leeway后,token的有效时间就是exp+leeway
            $decoded = JWT::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应
            $arr = (array)$decoded;
            $res['code']=1;
            $res['data']=$arr['data'];
            print_r($res);
        } catch(FirebaseJWTSignatureInvalidException $e) { //签名不正确
            $status['msg']="签名不正确";
            print_r($status);
        }catch(FirebaseJWTBeforeValidException $e) { // 签名在某个时间点之后才能用
            $status['msg']="token失效";
            print_r($status);
        }catch(FirebaseJWTExpiredException $e) { // token过期
            $status['msg']="token失效";
            print_r($status);
        }catch(Exception $e) { //其他错误
            $status['msg']="未知错误";
            print_r($status);
        }
    }

免责声明:文章转载自《thinkphp6使用jwt》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇景观分析工具:arcgis中patch analysis模块IIS下不能下载文件的docx文档,XLSX文档的设置方法(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

小程序之模板消息

使用模板消息 获取模板 id 登录https://mp.weixin.qq.com获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用,详见模板审核说明 页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支...

OAuth2.0协议专区-Springcloud集成springsecurity oauth2实现服务统一认证,应该时最简单的教程了~

1.配置认证服务器(1) 首先配置springsecurity,其实他底层是很多filter组成,顺序是请求先到他这里进行校验,然后在到oauth /** * @author: gaoyang * @Description: 身份认证拦截 */ @Order(1) @Configuration //注解权限拦截 @EnableGloba...

验证码实现原理

最简单的验证码   极验验证   扫码登录   12306验证码 先说结论吧 仔细了解了一番后,发现,其实 验证码 ,还是基于session原理 或者token原理 什么是session 这里推荐一本书《图解http》,里面讲解的很清楚。如果只是想简单的了解一下session,可以看看这个文章。 什么是token token是另一种使用较多的鉴权方式,具...

DNSPod DDNS 动态域名设置

所谓动态域名,就是当你的服务器 IP 地址发生变化的时候,自动地修改你在「域名解析服务商」那里的域名记录值 怎么操作?看官方文档DNSPod用户API文档 首先需要创建 Token 完整的 API Token 是由 ID,Token 组合而成的,用英文的逗号分割 用刚创建的 API Token 测试一下: $curl -X POST https://dn...

使用Laravel集成JWT认证开发RestfulApi

在使用跨平台应用程序时, API 是一个非常不错的选择。 除了网站,您的产品可能还有 Android 和 iOS 应用程序。 在这种情况下, API 也是同样出色的,因为您可以在不更改任何后端代码的情况下编写不同的前端。 使用 API 时,只需使用一些参数点击 GET , POST 或其他类型的请求,服务器就会返回 JSON (JavaScript Obj...

关于Token与授权

转自:https://blog.csdn.net/jek123456/article/details/74389715 1. 我把密码献给你   小梁开发了一个“信用卡管家”的程序 , 可以自动从邮箱中读取信用卡相关邮件,分析、汇总,形成一个报表。   小梁找到信用卡达人张大胖试用 : “你的信用卡那么多,看看我这个程序吧, 保准你会爱死它。”   张大胖...