返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >thinkphp6中怎么使用jwt认证
  • 112
分享到

thinkphp6中怎么使用jwt认证

2023-07-02 12:07:06 112人浏览 安东尼
摘要

本篇内容主要讲解“thinkPHP6中怎么使用Jwt认证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp6中怎么使用jwt认证”吧!thinkphp6 使用jwt客户端使用用户名和

本篇内容主要讲解“thinkPHP6中怎么使用Jwt认证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp6中怎么使用jwt认证”吧!

thinkphp6 使用jwt

  1. 客户端使用用户名和密码请求登录

  2. 服务端收到请求,验证用户名和密码

  3. 验证成功后,服务端会签发一个token,再把这个token返回给客户端

  4. 客户端收到token后可以把它存储起来,比如放到cookie中

  5. 客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带

  6. 服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据

安装 jwt 扩展

composer require firebase/php-jwt

安装之后在 vender 目录下的 firebase 文件夹下

调用 JWT里面的 encode 和 decode方法进行生成token和验证token

项目app 目录下的 common.php全局文件使用的 ,做成了公共方法,由于我是多应用的,所以就写在了api下面的common.php,大家可以根据自己需求适当调整

首先 引入 JWT ,然后写两个方法,生成验签和验证token。

<?phpuse \Firebase\JWT\JWT;use Firebase\JWT\Key;// 应用公共文件function signToken($uid){    $key='abcdefg';         //自定义的一个随机字串用户于加密中常用的 盐  salt    $token=array(        "iss"=>$key,        //签发者 可以为空        "aud"=>'',          //面象的用户,可以为空        "iat"=>time(),      //签发时间        "nbf"=>time(),      //在什么时候jwt开始生效        "exp"=> time()+30,  //token 过期时间        "data"=>[           //记录的uid的信息            'uid'=>$uid,        ]    );    $jwt = JWT::encode($token, $key, "HS256");  //生成了 token    return $jwt;}function checkToken($token){    $key='abcdefg';     //自定义的一个随机字串用户于加密中常用的 盐  salt    $res['status'] = false;    try {        JWT::$leeway    = 60;//当前时间减去60,把时间留点余地        $decoded        = JWT::decode($token, new Key($key, 'HS256')); //HS256方式,这里要和签发的时候对应        $arr            = (array)$decoded;        $res['status']  = 200;        $res['data']    =(array)$arr['data'];        return $res;    } catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确        $res['info']    = "签名不正确";        return $res;    }catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用        $res['info']    = "token失效";        return $res;    }catch(\Firebase\JWT\ExpiredException $e) { // token过期        $res['info']    = "token过期";        return $res;    }catch(Exception $e) { //其他错误        $res['info']    = "未知错误";        return $res;    }}

使用jwt生成token

        public function setJwtToken()    {        $uid = input('uid'); // 接收生成token字符串 如:123        $token = signToken($uid);        // 生成字符串: eyJ0eXaiOiJKV1QiLCJhbGCiOiJIUzI1NiJ9.eyJpc3MiOiJhYmNkZWZnIiwiYXVkIjoiIiwiaWF0IjoxNjQxNDUwMTU0LCJuYmYiOjE2NDE0NTAxNTcsImV4cCI6MTY0MTQ1NzM1NCwiZGF0YSI6eyJ1aWQiOiIxMjMifX0.I_GAkMsOhtEpIPkizCuQA-b9H6ovSovWx0AwAYI-b0s        echo $token;die;    }        public function checkJwtToken()    {        $token  = input('token'); // 接收生成token字符串        $result = checkToken($token);        // Array ( [status] => 200 [data] => Array ( [uid] => 123 ) )        print_r($result);die;    }

创建 user 控制器

<?phpdeclare (strict_types = 1);namespace app\api\controller;use think\facade\Db;use think\Request;class User{    public function login(Request $request)    {        if ($request->isPost()){            $username = $request->param('username','','trim');            $passWord = $request->param('password','','trim');            //查询数据库            $user = Db::name('user')->where('username',$username)->find();            if (!$user){                return JSON(['status' => 'fail','msg' => '用户名不存在']);            }            if ($user['password']!==md5($password)){                return json(['status' => 'fail','msg' => '密码错误']);            }            $getToken = $this->token($user);            return json(['status' => 'success','msg' => '登陆成功','token' => $getToken]);        }    }    public function token($user)    {        $uid = $user['username']; // 接收生成token字符串 如:123        $token = signToken($uid);        dd($token);    }        public function chToken()    {        $token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhYmNkZWZnIiwiYXVkIjoiIiwiaWF0IjoxNjQ4MDkwMDkyLCJuYmYiOjE2NDgwOTAwOTIsImV4cCI6MTY0ODA5MDEyMiwiZGF0YSI6eyJ1aWQiOiJcdTVmMjBcdTRlMDlcdTk4Y2UifX0.oJFpNcZ6stMymOCbD-meX0IPEIYLYNcwKxhMItF2cMw';        $result = checkToken($token);        // Array ( [status] => 200 [data] => Array ( [uid] => 123 ) )        print_r($result);die;    }}

用户登录成功返回给前端token,前端将token存储起来,在下次请求的时候头部携带着这个token,后端接受token,在中间件中进行验证

创建api中间件

<?phpdeclare (strict_types = 1);namespace app\middleware;class Api{        public function handle($request, \Closure $next)    {        //toke 合法性验证        $header = $request->header();        //判读请求头里有没有token        if(!isset($header['token'])){            return json(['code'=>440,'msg'=>'request must with token']);        }        $token = $header['token'];        try {            // token 合法            $token = checkToken($token);        }catch (\Exception $e){            return json(['code'=>440,'msg'=>'invalid token']);        }        return $next($request);    }}

到此,相信大家对“thinkphp6中怎么使用jwt认证”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: thinkphp6中怎么使用jwt认证

本文链接: https://lsjlt.com/news/341896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • thinkphp6中怎么使用jwt认证
    本篇内容主要讲解“thinkphp6中怎么使用jwt认证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp6中怎么使用jwt认证”吧!thinkphp6 使用jwt客户端使用用户名和...
    99+
    2023-07-02
  • ThinkPHP6使用JWT+中间件实现Token验证
    目录 前言 一、JWT介绍 二、使用composer安装JWT扩展包  三、在ThinkPHP6中直接使用JWT生成验证Token(简单粗暴) (一)代码文件 (二)请求接口测试 四、在ThinkPHP6中使用JWT+中间件生成验证Tok...
    99+
    2023-09-01
    php 开发语言
  • Go语言中使用jwt-go库实现JWT Token验证认证
    在Go语言中使用jwt-go库实现JWT Token鉴权 JWT(JSON Web Token)是一种轻量级的身份验证和授权的方式,可以帮助我们基于 JSON 格式在用户和系统之间传递安全可信的信息。在构造 ...
    99+
    2024-01-22
    Go语言 鉴权 JWT Token
  • 怎么在Django中实现jwt认证
    本篇文章为大家展示了怎么在Django中实现jwt认证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、 jwt 安装和配置安装虚拟环境下执行以下命令pip install dj...
    99+
    2023-06-14
  • Golang怎么使用JWT进行认证和加密
    这篇“Golang怎么使用JWT进行认证和加密”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang怎么使用JWT进行认...
    99+
    2023-07-05
  • go语言使用jwt认证的实现
    目录加密解密这几天在学习nodejs,进一步了解npm,学习过程中解开了以前的一个疑惑,以前不知道token可以携带信息,只以为是用来做对比的,学到了jwt身份认证,知道了如何使用的...
    99+
    2024-04-02
  • ASP.NET Core使用JWT认证授权的方法
     demo地址: https://github.com/william0705/JWTS 名词解析 认证 : 识别用户是否合法 授权: 赋予用户权限 (能访问哪些资...
    99+
    2022-06-07
    net 授权 jwt ASP.NET 方法 core ASP
  • 怎样使用Jwt身份认证保护 Asp.Net Core Web Api
    怎样使用Jwt身份认证保护 Asp.Net Core Web Api,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。网络上有许多资源可以教你如何保护ASP.NET...
    99+
    2023-06-19
  • .net使用jwt进行身份认证的流程记录
    目录什么是身份认证和鉴权jwt工作流程token是如何生成的jwt三部分jwt是如何保证数据不会被篡改的.net webapi 的 demo总结什么是身份认证和鉴权 举个例子 假设有...
    99+
    2024-04-02
  • Spring Boot怎么集成JWT实现前后端认证
    本文小编为大家详细介绍“Spring Boot怎么集成JWT实现前后端认证”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot怎么集成JWT实现前后端认证”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • 如何在Spring Boot中利用JWT进行接口认证
    本篇文章为大家展示了如何在Spring Boot中利用JWT进行接口认证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jwt(json web token)用户发送按照约定,向服务端发送 Heade...
    99+
    2023-05-31
    springboot jwt wt
  • Golang使用JWT进行认证和加密的示例详解
    目录概述签名 vs 加密选择签名方法JWT和OAuthJWT的用法例子Example 1Example 2Example 3最近看了一个名为go-auth的库,它将JWT作为HTTP...
    99+
    2023-02-22
    Golang JWT认证 Golang JWT加密 Golang JWT
  • .NET Core怎么实现Cookie和JWT混合认证、授权
    本篇内容介绍了“.NET Core怎么实现Cookie和JWT混合认证、授权”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言为防...
    99+
    2023-06-26
  • ASP.NET Core 6.0怎么添加JWT认证和授权功能
    本篇内容介绍了“ASP.NET Core 6.0怎么添加JWT认证和授权功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2023-06-30
  • Node中express的身份认证怎么使用
    今天小编给大家分享一下Node中express的身份认证怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Web开发模式...
    99+
    2023-07-05
  • jwt在node中怎么使用
    本文小编为大家详细介绍“jwt在node中怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“jwt在node中怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。导语:由...
    99+
    2024-04-02
  • ThinkPHP5实现JWT Token认证的过程(亲测可用)
    1、composer先挂载阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/co...
    99+
    2022-11-13
    ThinkPHP5 JWT Token认证 JWT Token认证 TP5环境jwt验证
  • php使用jwt作登录验证
    1 在项目根目录下,安装jwt composer require firebase/php-jwt 2 在登录控制器中加入生成token的代码 use Firebase\JWT\JWT;use Firebase\JWT\Key;class ...
    99+
    2023-09-14
    php 开发语言
  • 浅谈ASP.NET Core 中jwt授权认证的流程原理
    1,快速实现授权验证 什么是 JWT ?为什么要用 JWT ?JWT 的组成? 这些百度可以直接找到,这里不再赘述。 实际上,只需要知道 JWT 认证模式是使用一段 Token...
    99+
    2022-06-07
    ASP.NET net jwt core ASP
  • 浅析nodejs中怎么使用JWT?
    同样点击Send Request当看到下面图片的响应,就意味着响应成功:其实以上就是JWT的一些简单的用法,接下来再说一下JWT本身存在的优缺点.JWT的不足JWT占用的存储空间其实并不小,如果我们需要签名做过多的信息,那么token很可能...
    99+
    2023-05-14
    JWT node
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作