dbfun/jwtapi

通过API使用用户名和密码获取Jwt令牌

dev-master 2021-01-16 19:25 UTC

This package is auto-updated.

Last update: 2024-09-17 03:44:51 UTC


README

通过API使用用户名和密码从Laravel Passport获取Jwt令牌。不需要client_idclient_secret

自定义令牌声明。无Guzzle依赖。

安装

composer require dbfun/jwtapi
# Choose "yes":
php artisan passport:install --uuids

保存客户端ID以供将来参考。

Personal access client created successfully.
Client ID: ..............
Client secret: ..............

config/auth.php:

'api' => [
    'driver' => 'passport',
    'provider' => 'users',
    'hash' => false,
],

添加到config/app.php

/*
 * Package Service Providers...
 */

Dbfun\JwtApi\JwtApiServiceProvider::class,

添加到app/Providers/AuthServiceProvider.php

\Dbfun\JwtApi\JwtApi::routes();
// \Laravel\Passport\Passport::tokensCan(/* List of scopes */);

添加到模型文件User.php

use Dbfun\JwtApi\Traits\JwtApiTokenTrait;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use JwtApiTokenTrait;
    use HasApiTokens;
    
    public function scopes(): array
    {
        // put here the logic
        return [];
    }
}

密钥

您可以通过以下代码片段生成私有和公钥

mkdir /tmp/keys
ssh-keygen -t rsa -f /tmp/keys/key
openssl rsa -in /tmp/keys/key -pubout > /tmp/keys/key.pub
cat /tmp/keys/*

添加到.env

PASSPORT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n(private key)\n-----END RSA PRIVATE KEY-----"
PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n(public key)\n-----END PUBLIC KEY-----"
PASSPORT_PERSONAL_ACCESS_CLIENT_ID=

使用上面的个人客户端ID。或者查看oauth_clients表。或者生成新的

php artisan passport:client --personal

认证提供者

认证提供者通过配置auth.guards.api.provider进行配置

return [
    'guards' => [
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',                // <-- provider name
            'hash' => false,
        ],
    ],
    'providers' => [
        'users' => [                              // <-- "users" provider config
            'driver' => 'eloquent',               // <-- driver
            'model' => \App\Models\User::class,   // <-- driver option
        ],
    ],
];