dkrasov / jwt-auth-guard
为Laravel和Lumen提供的JWT认证保护器
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 Auth Guard是一个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)。有关更多信息,请参阅 许可证文件。