标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。