ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pyg电商分类

2021-11-28 20:31:51  阅读:163  来源: 互联网

标签:return jwt res 分类 JWT captcha token 电商 pyg


登录jwt

public function login()
    {
        $loginData = $this->request->post();
        if (empty($loginData['captcha'])) {
            return errorX('验证码没填写');
        }
        $captcha = $loginData['captcha'];
        unset($loginData['captcha']);
        $res = user::login($loginData);
        if (!$res) {
            return errorX('账号或密码错误');
        }
//        生成jwt
        $token = JWTX::signToken($res['id']);

        $captchaRes = captcha_check($captcha);
        if (!$captchaRes) {
            return errorX('验证码错误');
        }
//        定义返回数组
        $arr = [
            'admin' => $res['admin'],
            'token' => $token
        ];
        return successX($arr);
    }

生成 jwt 

public static function signToken($uid)
 {
     $key = '!@#$%*&';         //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当    于加密中常用的 盐  salt
     $token = array(
         "iss" => $key,        //签发者 可以为空
         "aud" => '',          //面象的用户,可以为空
         "iat" => time(),      //签发时间
         "nbf" => time() + 3,    //在什么时候jwt开始生效  (这里表示生成100秒后才生效)
         "exp" => time() + 200, //token 过期时间
         "data" => [           //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
             'uid' => $uid,
         ]
     );
     //  print_r($token);
     $jwt = JWT::encode($token, $key, "HS256");  //根据参数生成了 token
     return $jwt;
 }

//验证token

public static function checkToken($token)
 {
     $key = '!@#$%*&';
     $status = array("code" => 2);
     try {
         JWT::$leeway = 60;//当前时间减去60,把时间留点余地
         $decoded = JWT::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应
         $arr = (array)$decoded;
         $res['code'] = 200;
         $res['data'] = $arr['data'];
         return $res;
     } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
         throw new Exception('签名不正确');
     } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
         throw new Exception('token失效');
     } catch (\Firebase\JWT\ExpiredException $e) { // token过期
         throw new Exception('token失效');
     } catch (\Exception $e) { //其他错误
         throw new Exception('未知错误');
     }
 }

获取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));

}

标签:return,jwt,res,分类,JWT,captcha,token,电商,pyg
来源: https://blog.csdn.net/m0_58861359/article/details/121596980

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有