irazasyed / jwt-auth-guard
JWT认证守卫,适用于Laravel和Lumen
Requires
- php: >=5.5.0
- illuminate/support: ~5.0
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
- tymon/jwt-auth: ^1.0@dev
Suggests
- tymon/jwt-auth: Add JWT Auth Package for Laravel and Lumen
README
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
贡献
有关详细信息,请参阅CONTRIBUTING和CONDUCT。
有关任何问题、反馈、建议或疑问,请使用此处的问题跟踪器。
安全
如果您发现任何与安全相关的问题,请通过电子邮件syed+gh@lukonet.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。