quadram/laravel-passport

此包安装Laravel Passport库,并为您的用户提供了一些有用的资源,用于为用户颁发有效和无效的令牌。

dev-master 2020-11-24 15:05 UTC

This package is auto-updated.

Last update: 2024-09-24 23:41:34 UTC


README

访问我们的网站

Laravel Passport

此库安装Laravel Passport库,并允许为已认证用户提供访问令牌。无需将用户重定向到oauth路由,只需使用当前用户实例获取新的访问令牌或刷新它即可。

安装项目

# require the library into your project
composer require quadram/laravel-passport

# install and configure library
php artisan quadram:laravel-passport-install

如何使用

将LaravelPassportTrait添加到您的用户模型中

use Quadram\LaravelPassport\Traits\LaravelPassportTrait;

class User extends Model
{
    use LaravelPassportTrait, Authenticatable;
    ...

然后使用您的用户实例为用户颁发新的访问令牌

# access token
$this->createAccessToken();

# personal access token
$this->createPersonalToken();

这些调用将在用户实例中添加一个具有以下结构的新的授权字段

    accessToken = [
        'accessToken' => '....',
        'refreshToken' => '....',
        'expires' => 123456...
    ];

测试

当您使用phpunit测试发布令牌的路由时,Trait将返回一个测试令牌,而不会调用Passport提供的实际oauth路由。

如果您想测试任何Passport相关功能,您应该在路由中传递一个Authorization头。

此外,Trait将使用auth用户来更新和删除令牌,所以请记住使用"Passport::actingAs"以避免错误。

    $user = factory(User::class)->create();
    $user->createAccessToken();

    Passport::actingAs($user);

    $headers = [
        'Authorization' => 'Bearer ' . $user->authorization['accessToken']
    ];

    $this->withHeaders($headers)
        ->json('put', '/api/sessions', ['refreshToken' => $user->authorization['refreshToken']])
        ->assertStatus(200)
        ->assertsee('authorization')
        ->assertsee('accessToken')
        ->assertsee('refreshToken');

环境变量

可以使用.env文件配置每个令牌的默认过期时间。

# Default expiration time for access tokens in minutes, default = 60 * 24 -> 1 day
# TOKEN_EXPIRES_IN_MINUTES

# Default expiration time for refresh tokens in minutes, default = 60 * 24 * 30 -> 30 days
# REFRESH_TOKEN_EXPIRES_IN_MINUTES

# Default expiration time for personal tokens in minutes, default = 60 * 24 * 30 * 12 * 100 -> 1 year
# PERSONAL_TOKEN_EXPIRES_IN_MINUTES

# Curl should verify SSL certificate when calling the server (default = false)
# PASSPORT_CURL_VERIFY_SSL

待办任务

  • 颁发令牌的基本Trait。
  • 自定义Passport客户端以授权用户。
  • 在Trait中添加创建用户的函数。
  • 为会话管理创建默认路由。