Laravel9 + jwt-auth 登录认证

本文档详细介绍了如何在 Laravel 中安装和配置 jwt-auth 库,包括通过 Composer 安装、设置 JWT 秘钥、修改 auth.php 配置文件、更新 User 模型以及测试 token 生成。完成这些步骤后,可以实现 API 的身份验证功能。
摘要由CSDN通过智能技术生成

1. 安装 jwt-auth

composer require php-open-source-saver/jwt-auth

2. 设置 jwt secret

php artisan jwt:secret

 3. 修改 config/auth.php

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        // 增加这四行
        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],

4. 修改 app\Models\User.php

<?php

...

// 增加这行
use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject;

// 增加 implements JWTSubject
class User extends Authenticatable implements JWTSubject
{
    ...

    // 实现下面两个方法
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    public function getJWTCustomClaims()
    {
        return [];
    }
}

5. 使用 tinker 测试一下是否安装成功。首先使用 User::create 创建一个用户,接着用 Auth::guard('api')->login($user) 生成 token

sail@0f05d28f0693:/var/www/html$ php artisan tinker 
Psy Shell v0.11.8 (PHP 8.1.9 — cli) by Justin Hileman
>>>
>>> User::create([
... 'name' => 'test',
... 'email' => 'test@qq.com',
... 'password' => encrypt('123456')
... ])
[!] Aliasing 'User' to 'App\Models\User' for this Tinker session.
=> App\Models\User {#3681
     name: "test",
     email: "test@qq.com",
     #password: "eyJpdiI6ImUya2MwdnhRelhiaFhzTzMyWlNCNkE9PSIsInZhbHVlIjoiRzNCcytTV2JwbTc2enhNVDNYSlNOQT09IiwibWFjIjoiNDgxM2VjNmNkMzk5MDJmMDEyMDdlM2VmNzlkM2FkMTFiNzAwYzVhMmUzZDRmMTNmY2I4YTg3OWY4YmVmNTI1YiIsInRhZyI6IiJ9",
     updated_at: "2022-09-15 00:57:38",
     created_at: "2022-09-15 00:57:38",
     id: 1,
   }

>>>
>>> $user = User::where('name', 'test')->first();
=> App\Models\User {#4479
     id: 1,
     name: "test",
     email: "test@qq.com",
     email_verified_at: null,
     #password: "eyJpdiI6ImUya2MwdnhRelhiaFhzTzMyWlNCNkE9PSIsInZhbHVlIjoiRzNCcytTV2JwbTc2enhNVDNYSlNOQT09IiwibWFjIjoiNDgxM2VjNmNkMzk5MDJmMDEyMDdlM2VmNzlkM2FkMTFiNzAwYzVhMmUzZDRmMTNmY2I4YTg3OWY4YmVmNTI1YiIsInRhZyI6IiJ9",
     #remember_token: null,
     created_at: "2022-09-15 00:57:38",
     updated_at: "2022-09-15 00:57:38",
   }

>>>
>>> Auth::guard('api')->login($user);
=> "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYXBpLnRlc3QiLCJpYXQiOjE2NjMyMDM1MDMsImV4cCI6MTY2MzIwNzEwMywibmJmIjoxNjYzMjAzNTAzLCJqdGkiOiJNNE94Q0Y2cktyRHZrME44Iiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.ccq-2iOinoBCK6nWwtgkxeR9gOItCfEC7-QOim7qRH4"

>

6. token 生成成功,接下去就可以封装登录逻辑了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值