irazasyed/jwt-auth-guard

JWT认证守卫,适用于Laravel和Lumen

v1.0.4 2016-04-27 15:47 UTC

This package is auto-updated.

Last update: 2024-08-25 20:22:44 UTC


README

Join PHP Chat Chat on Telegram Laravel Package Latest Version on Packagist Software License Total Downloads

JWT认证守卫是一个Laravel & Lumen包,允许你将jwt用作应用程序中认证守卫的驱动程序。

该守卫使用tymon/jwt-auth包进行认证和令牌处理。

要求

  • Laravel或Lumen安装。
  • tymon/jwt-auth ^1.0@dev包设置和配置。

预安装

首先安装和设置tymon/jwt-auth包。

$ composer require tymon/jwt-auth:^1.0@dev

完成设置后,进行配置然后安装此包。

安装

通过Composer

$ composer require irazasyed/jwt-auth-guard

添加服务提供者

Laravel

打开config/app.php,并将以下内容添加到底部的providers数组中:

Irazasyed\JwtAuthGuard\JwtAuthGuardServiceProvider::class

Lumen

打开bootstrap/app.php,并注册服务提供者

$app->register(Irazasyed\JwtAuthGuard\JwtAuthGuardServiceProvider::class);

用法

打开你的config/auth.php配置文件,在任一守卫的驱动程序下替换为jwt-auth。确保你也设置了与数据库通信的守卫的provider

设置守卫驱动程序

// config/auth.php
'guards' => [
    'api' => [
        'driver' => 'jwt-auth',
        'provider' => 'users'
    ],
    
    // ...
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model'  => App\User::class,
    ],
],

中间件使用

保护路由的中间件

Route::get('api/content', ['middleware' => 'auth:api', 'uses' => 'ContentController@content']);

保护控制器的中间件

<?php

namespace App\Http\Controllers;

class ContentController extends Controller
{
    public function __construct() 
    {
        $this->middleware('auth:api');
    }
}

注意:以上示例假设你已在config/auth.php文件中设置了名为api的守卫,其驱动程序为jwt-auth,如上文中“设置守卫驱动程序”部分所述。

以下用法示例假设你已将默认认证守卫设置为使用jwt-auth驱动程序的守卫。

你还可以通过在调用任何方法之前显式地定义守卫来使用它,只需在前面加上Auth::guard('api')

示例:Auth::guard('api')->user()

尝试认证并返回令牌

// This will attempt to authenticate the user using the credentials passed and returns a JWT Auth Token for subsequent requests.
$token = Auth::attempt(['email' => 'user@domain.com', 'password' => '123456']);

通过ID进行一次性认证

if(Auth::onceUsingId(1)) {
    // Do something with the authenticated user
}

通过凭证进行一次性认证

if(Auth::once(['email' => 'user@domain.com', 'password' => '123456'])) {
    // Do something with the authenticated user
}

验证凭证

if(Auth::validate(['email' => 'user@domain.com', 'password' => '123456'])) {
    // Credentials are valid
}

检查用户是否已认证

if(Auth::check()) {
    // User is authenticated
}

检查用户是否是访客

if(Auth::guest()) {
    // Welcome guests!
}

注销认证用户

Auth::logout(); // This will invalidate the current token and unset user/token values.

通过ID生成JWT认证令牌

$token = Auth::generateTokenById(1);

echo $token;

获取认证用户

一旦用户通过中间件进行认证,你可以通过以下方式访问其详细信息:

$user = Auth::user();

你还可以使用令牌本身手动访问用户信息

$user = Auth::setToken('YourJWTAuthToken')->user();

获取认证用户的ID

$userId = Auth::id();

刷新过期令牌

尽管建议使用该包提供的中间件进行刷新,但如果你愿意,你也可以使用此方法手动进行。

刷新请求中传递的过期令牌

$token = Auth::refresh();

刷新传递的过期令牌

Auth::setToken('ExpiredToken')->refresh();

使令牌无效

使请求中传递的令牌无效

$forceForever = false;
Auth::invalidate($forceForever);

手动设置使令牌无效

$forceForever = false;
Auth::setToken('TokenToInvalidate')->invalidate($forceForever);

获取令牌

$token = Auth::getToken(); // Returns current token passed in request.

获取令牌有效负载

此方法将解码令牌并返回其原始负载。

获取请求中传递的令牌的有效负载

$payload = Auth::getPayload();

手动获取给定令牌的有效负载

$payload = Auth::setToken('TokenToGetPayload')->getPayload();

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTINGCONDUCT

有关任何问题、反馈、建议或疑问,请使用此处的问题跟踪器。

安全

如果您发现任何与安全相关的问题,请通过电子邮件syed+gh@lukonet.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件