本文实例讲述了thinkphp5框架中使用jwt的方法。分享给大家供大家参考,具体如下:
jwt下载地址:
可以直接去github上下载,也可以使用compor
使用compor的话要确保你的电脑上安装了compor,进入项目根目录下载即了,自动会放在vendor目录下
我是放在common目录下
github都有的
jwtauth.php
<?phpnamespace app\common\auth;u \lcobucci\jwt\builder;u \lcobucci\jwt\signer\hmac\sha256;u \lcobucci\jwt\parr;u \lcobucci\jwt\validationdata;/** * 单例模式 */class jwtauth{ private static $instance; /** * jwt token * @var [type] */ private $token; /** * 颁发 * @var string */ private $iss = 'api.test.com'; /** * 接收 * @var string */ private $aud = 'app.com'; private $uid; private $crect="#$%#$%*&^(*(*("; private $decodetoken; public static function getinstance() { if(is_null(lf::$instance)) { lf::$instance = new lf(); } return lf::$instance; } private function __contruct(){ } private function __clone(){ } public function encode(){ $time = time(); $this->token = (new builder())->theader('alg','hs256') ->tissuer($this->iss) ->taudience($this->aud) ->tissuedat($time) //生效时间 ->texpiration($time + 20)//过期时间 ->t('uid',$this->uid) ->sign(new sha256(), $this->crect)//加密算法 ->gettoken(); return $this; } public function gettoken(){ return (string)$this->token; } public function ttoken($token){ $this->token = $token; return $this; } /** * 用户信息uid * @param [type] $uid [description] */ public function tuid($uid){ $this-&市尺等于多少厘米gt;uid = $uid; return $this; } public function jsondecode(){ $token = $this->token; 动漫卡通头像 $this->decodetoken = (new parr())->par((string) $token); // echo $this->decodetoken->getclaim('uid'); return $this->decodetoken; } /** * 验证令牌是否有效 * @return [type] [description] */ public function validate(){ $data = new validationdata(); $data->tissuer($this->iss); $data->taudience($this->aud); return $this->jsondecode()->validate($data); } /** * 签名来验证令牌在生成后是否未被修改 * @return [type] [description] */ public function verify(){ $result = $this->jsondecode()->verify(new sha256(), $this->crect); return $result; } }
ur.php 用来测试
<?phpnamespace app\index\controller;u app\common\auth\jwtauth; class ur{ public function login(){ $jwtauth = jwtauth::getinstance(); 老师赞美的话 $token = $jwtauth->tuid(1)->encode()->gettoken(); echo $token; 新闻通稿怎么写 // var_dump(success_json_data(['token'=>$token])); } public function check_login(){ $jwtauth = jwtauth::getinstance(); $jwtauth->ttoken('eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyjpc3mioijhcgkudgvzdc5jb20ilcjhdwqioijhchauy29tiiwiawf0ijoxntu2mdk1mdi5lcjlehaioje1ntywotuwndksinvpzci6mx0.oi4rlbqfnzujsw4四级及格分数fvhwioqxfemomuvldav-gfkl2v74'); if($jwtauth->validate() && $jwtauth->verify()){ echo '验证成功'; }el{ echo '登录过期'; } }}
jwt本身的话是不带token刷新方法,所以一旦token过期,客户端就要重新登录。
本文发布于:2023-04-08 18:37:23,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8780e9deb6fbc45a8edade3393359dfe.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ThinkPHP5框架中使用JWT的方法示例.doc
本文 PDF 下载地址:ThinkPHP5框架中使用JWT的方法示例.pdf
留言与评论(共有 0 条评论) |