idoleg/jwt-auth

Laravel JWT认证守卫

dev-master 2018-09-04 15:11 UTC

This package is not auto-updated.

Last update: 2024-09-26 01:40:38 UTC


README

配置

config/auth.php

['guards' => [
        'api' => [  // название вашего защитника, можете указать любое, главное что бы оно же было в секции "defaults"
            'driver' => 'jwt', // обязательно укажите название драйвера "jwt"
            'provider' => 'users', // провайдер, название секции из "providers"
            'config' => [
                'authToken' => [
                    'verifyKey' => env('JWT_AUTH_KEY'), // ключ, которым будут подписыватся токены авторизации
                    'life' => 2592000, // время жизни токенов авторизации
                ],
                'guest' => [ // в этой секции возможно указать Eloquent Model и ее ID, она будет возвращаться, когда никакой пользователь не авторизован в системе. Если здесь указано false, будет возвращаться null (как стандартно в Laravel)
                    'id' => 1,
                    'model' => App\Models\User::class,
                ],
            ]
        ],
    ]
]

方法

  1. login($user) - 使用Eloquent Model认证用户

  2. loginByCredentials($credentials) - 基于账户信息认证用户

  3. loginByToken($token) - 基于auth token认证用户

  4. loginByRequest($request = null) - 基于请求中的Authorization头认证用户。如果没有提供$request参数,则检查当前请求

  5. createAuthToken($user = null) - 为用户发放认证token。如果没有指定$user,则发放给当前已认证的用户

访客

如果配置中指定了"guest"部分,那么当系统中没有用户认证时,尝试获取时将返回非null,而是指定在该部分的Eloquent Model。

EloquentTokenUser提供者

2张表(模型)

  1. user - 存储用户信息
  2. user_tokens - 存储用户长期认证的tokens

user_tokens表中的字段

    $table->increments('id');

    $table->unsignedInteger('user_id');

    $table->string('unique_token', 100);
    $table->ipAddress('user_ip')->nullable();

    $table->string('type', 32)->nullable();
    $table->string('agent', 256)->nullable();

    $table->timestamp('logged_at');

配置

config/auth.php

 ['providers' => [
        'users' => [  // название вашего провайдера, можете указать любое, главное что бы оно же было в секции "guards"
            'driver' => 'eloquent-tokens', // обязательно укажите название драйвера "eloquent-tokens"
            'models' => [
                'user' => App\Models\User::class, // модель, в которой хрянятся пользоавтели
                'token' => App\Models\UserToken::class, // модель, в которой хрянятся токены пользователей
            ],
        ],
    ],
]