paulvl/jwt-guard

Laravel 5.* 的 JWT 守护

v1.2.2 2017-10-16 01:08 UTC

This package is auto-updated.

Last update: 2024-09-12 04:01:06 UTC


README

JWT-Guard 是一个 Laravel 扩展包,允许使用 JWT 令牌作为守卫驱动进行认证和授权。

Latest Stable Version Latest Unstable Version License Total Downloads

快速安装

首先通过 Composer 安装此包。

您可以运行:

composer require paulvl/jwt-guard 1.*

或者编辑您的项目 composer.json 文件以需要 paulvl/jwt-guard。

    "require": {
        "paulvl/jwt-guard": "1.*"
    }

然后,在终端中更新 Composer

composer update

一旦包安装完成,最后一步是添加服务提供者。打开 config/app.php,并将新项目添加到 providers 数组中

Paulvl\JWTGuard\Auth\AuthServiceProvider::class,

最后发布包的配置文件

php artisan vendor:publish --provider="Paulvl\JWTGuard\Auth\AuthServiceProvider"

然后将会创建 config/jwt.php 文件。

JWT 守卫

JWT 驱动设置!

要开始使用 JWT 驱动,您需要在 config/auth.php 文件上创建一个新的守卫

...
'guards' => [
        ...
        'jwt' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
        ...
    ],
...

您可以使用您想要的任何 Eloquent 提供者。

使用 JWT 守卫

####attempt

    // Assuming you retrieve your credentials from request
    $credentials = [
        'email' => 'test@example.com',
        'password' => 'password'
    ];
    //this will return a token array
    return Auth::guard('jwt')->attempt($credentials);

blacklistToken

    //this will blacklist current jwt-token and referenced refresh token if exists
    return Auth::guard('jwt')->blacklistToken();

使用有效的 JWT 中间件

如果您需要使用 JWT 令牌请求验证身份,请将 Paulvl\JWTGuard\Auth\Middleware\ValidJwt::class 添加到 Http/Kernel.php 文件的 routeMiddleware

protected $routeMiddleware = [
    ...
    'valid-jwt' => \Paulvl\JWTGuard\Auth\Middleware\ValidJwt::class,
    ...
];

然后如果您需要验证一个有效的 jwt-token

Route::middleware('valid-jwt:api_token')->get('/your-route', function (Request $request) {
    // any thing tha you need to protect
});

或者如果您需要验证一个有效的刷新令牌

Route::middleware('valid-jwt:refresh_token')->get('/your-route', function (Request $request) {
    // your refresh action for example
});

使用预构建控制器

JWT-Guard 包含一个预构建的控制器,可以为您处理登录、令牌刷新和黑名单。只需将其添加到您的路由文件中

Route::post('/jwt/login', '\Paulvl\JWTGuard\Http\Controllers\Auth\LoginController@login')->name('jwt.login');

Route::post('/jwt/refresh', '\Paulvl\JWTGuard\Http\Controllers\Auth\LoginController@refresh')->name('jwt.refresh');

Route::post('/jwt/blacklist', '\Paulvl\JWTGuard\Http\Controllers\Auth\LoginController@blacklist')->name('jwt.blacklist');

贡献和分享 ;-)

如果您喜欢这段代码,请与您的朋友分享,并随时贡献任何改进。