IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021-08-13 laravel jwt -> 正文阅读

[PHP知识库]2021-08-13 laravel jwt

  1. 安装必要的第三方包
$ composer require overtrue/wechat:~5.0 -vvv
  1. 修改config/app.php中的 providersaliases
'providers' => [
            ...
        /*
         * Package Service Providers...
         */
        Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
            ...
    ],

    'aliases' => [
            ...
        'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
        'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,

    ],

3.修改config/auth.php中的 providers

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Member\Members::class,
            // 这个根据项目设置, 我这里的用户表用的是member所以这里的模型需要换成对应的Members类
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],
  1. 发布配置, 发布后会自动生成一个配置文件 config/jwt.php
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
  1. 模型设置, 我这边用的是Member, 使用其他模型也可以
use Illuminate\Auth\Authenticatable as AuthenticableTrait;
use Illuminate\Contracts\Auth\Authenticatable;

class Member extends Model implements Authenticatable
{
    use AuthenticableTrait;
}
  1. 生成jwt的加密key
$ php artisan jwt:secret
  1. 登录控制器
...
//      自定义一个以payload变量
        $customClaims = ['sub' => ['member' => $member->toArray()]];
        $payload = JWTFactory::customClaims($customClaims)->make();

        if (!$token = JWTAuth::encode($payload)->get()) {
            throw new \Exception('Unauthorized');
        }
//        $ttl = $request->out_time ?? config('jwt.ttl'); # 设置token 过期时间

//        if (!$token = Auth::guard('api')->setTTL($ttl)->tokenById($user->id)) {
//            return ['code' => 500, 'massage' => 'token 过期'];
//        }

//        return apiJson($this->respondWithToken($token));

        return ['token' => $token, 'member' => $member];
  1. 中间件校验
public function handle($request, Closure $next)
    {
        try {
            $token = JWTAuth::getToken();
            if (empty($token)) {
                return response()->json(['status_code' => 4001, 'message' => '未登录']);
            }

            $sub = JWTAuth::setToken($token)->getPayload()->get('sub');
            if (empty($sub)) {
                return response()->json(['status_code' => 4002, 'message' => '用户异常']);
            }

            //如果想向控制器里传入用户信息,将数据添加到$request里面
            $request->attributes->add(['member' => json_encode($sub->member)]); //添加参数
            //其他地方获取用户值
//            var_dump($request->attributes->get('member'));exit();
            return $next($request);
        } catch (TokenExpiredException $e) {
            try {
                $token = JWTAuth::refresh();
                if ($token) {
                    return response()->json(['status_code' => 4003, 'message' => '新token', 'token' => $token]);
                }
            } catch (JWTException $e) {
                return response()->json(['status_code' => 4004, 'message' => 'token无效', 'token' => '']);
            }
        }
//        catch (\Exception $e) {
//            return response()->json(['status_code' => 500, 'message' => 'token无效']);
//        }
    }
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:47:53  更:2021-08-30 11:48:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:27:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码