paulvl / jwt-guard
Laravel 5.* 的 JWT 守护
v1.2.2
2017-10-16 01:08 UTC
Requires
- php: >=5.5.9
- firebase/php-jwt: ~3.0|~4.0
- illuminate/support: 5.*
README
JWT-Guard 是一个 Laravel 扩展包,允许使用 JWT 令牌作为守卫驱动进行认证和授权。
快速安装
首先通过 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');
贡献和分享 ;-)
如果您喜欢这段代码,请与您的朋友分享,并随时贡献任何改进。