首页 » 网站推广 » phpusertoken生成技巧_AD编程文章TP框架中运用jwt技能来实现Token

phpusertoken生成技巧_AD编程文章TP框架中运用jwt技能来实现Token

访客 2024-12-09 0

扫一扫用手机浏览

文章目录 [+]

composer require firebase/php-jwt

3.在User数据模型中创建 createToken方法:

//天生token(利用jwt扩展库) function createToken($user=[],$exptime=0) { $key = md5($this->jwt_secret_key); //jwt的签发密钥,这里的密钥,可以定义在该类的起始位置; $time = time(); //签发韶光 $expire = $time + $exptime; //过期韶光,作为方法的参数 $token = array( $user, //用户信息,作为jwt的信息载体 "iss" => "ADStudio",//签发组织 "aud" => "ADONG", //签产生发火者 "iat" => $time, "nbf" => $time, "exp" => $expire ); $jwt = JWTUtil::encode($token,$key); return $jwt; }

4.在User数据模型中创建verifyToken方法: 对天生的token进行验证

phpusertoken生成技巧_AD编程文章TP框架中运用jwt技能来实现Token

//考验token是否合法function verifyToken($token){ $key = md5($this->jwt_secret_key); //jwt的签发密钥,验证token的时候须要用到 try{ $jwtAuth = json_encode(JWTUtil::decode($token,$key,array("HS256"))); $authInfo = json_decode($jwtAuth,true); return ['msg'=>'token正常','data'=>$authInfo[0]]; }catch (ExpiredException $e){ return ['msg'=>'token过期','data'=>[]]; }catch (\Exception $e){ return ['msg'=>'token缺点','data'=>[]]; }}

5.在用户登录的方法中,添加调用createToken方法,产生token,并且返回到客户端:

phpusertoken生成技巧_AD编程文章TP框架中运用jwt技能来实现Token
(图片来自网络侵删)

public function nameLogin() { $params=request()->param(); $username=$params['username']; $userpassword = $params['userpassword']; $vcode = $params['vcode']; if(!captcha_check($vcode)){ //调用在通用函数common中的抛出非常缺点 throw_comm_exception('图片验证码缺点',10011); }; //利用用户名和密码对数据表进行查询,采取数组办法进行多条件查询 $arr = ['username'=>$username, 'userpassword'=>$userpassword ]; //查询 $usr = User::where($arr)->find(); //判断返回结果 if($usr!=NULL){ //返回精确的数据 $arr2 = array( 'name'=>$usr->UserName, 'admin'=>$usr->UserToAdmin, 'group'=>$usr->UserToGroup, 'type'=>$usr->UserType ); $token = $this->createToken($arr2,$this->expire_time); return $token; } else{ //抛出非常缺点信息 throw_comm_exception('用户名或密码缺点',10012); } }

6.掌握器中用户登录方法(无需变动):

public function userNameLogin() { (new UserValidate())->gocheck('userlogin'); $res = (new UserModel())->nameLogin(); return $res; }

7.掌握器中增加token验证方法(临时增加)

public function checkToken() { $token=request()->param('token'); return json((new UserModel())->verifyToken($token)); }

8.在路由中添加两个访问地址(个中第一个用户登录之前已经存在,不用写,第二个是验证token路由,临时测试利用)

Route::post('user/usernamelogin',':version.user/usernamelogin'); Route::post('user/checktoken',':version.user/checktoken');

9.终极测试的效果如下:

通过正常的用户登录,获取基于jwt的token值

对token值进行验证,精确的存放在jwt中的user信息

token缺点时的提示信息

token过期时的提示信息

标签:

相关文章