imunew / tymon-jwt-auth
0.4
2020-12-21 09:57 UTC
Requires
- php: ^7.0|^8.0
- illuminate/support: ^5.5|^6|^7|^8
- tymon/jwt-auth: ^1.0
Requires (Dev)
- orchestra/testbench: ^5.1|^6.0
This package is auto-updated.
Last update: 2024-09-21 18:02:07 UTC
README
这是 Laravel 扩展 tymon/jwt-auth 的包。
扩展了什么?
- 禁用
QueryString
、InputSource
和RouteParams
解析器 - 使
AuthHeaders
解析器可选(默认:禁用) - 优先使用
Cookies
解析器 - 使 cookie 名称可更改
- 添加
AuthResource
(带 cookie) - 添加
RefreshJwtToken
中间件(带 cookie)
安装
$ composer require imunew/tymon-jwt-auth
发布供应商
$ php artisan vendor:publish --provider="Imunew\JWTAuth\Providers\ServiceProvider"
配置
将环境变量 JWT_AUTH_COOKIE_KEY
设置为更改 cookie 名称。
JWT_AUTH_COOKIE_KEY={cookie name here}
将环境变量 JWT_AUTH_AUTH_HEADER_ENABLED
设置为启用 AuthHeaders
解析器。
JWT_AUTH_AUTH_HEADER_ENABLED=true
使用 AuthResource
返回 AuthResource
将 JWT 令牌设置在 cookie 中。
// App\Http\Controllers\Auth\Login public function __invoke(LoginRequest $request) { $credentials = $request->only(['login_id', 'password']); if (! $token = $this->jwtGuard->attempt($credentials)) { throw new AuthenticationException(); } return new AuthResource(new JwtToken($token, $this->factory->getTTL() * 60)); }
使用 RefreshJwtToken
在 \App\Http\Middleware\Authenticate::class
之前添加 \Imunew\JWTAuth\Middleware\RefreshJwtToken::class
。
// App\Http\Kernel protected $middlewarePriority = [ \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \Imunew\JWTAuth\Middleware\RefreshJwtToken::class, \App\Http\Middleware\Authenticate::class, \Illuminate\Routing\Middleware\ThrottleRequests::class, \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Auth\Middleware\Authorize::class, ];
将 \Imunew\JWTAuth\Middleware\RefreshJwtToken::class
添加到 $middlewareGroups
。
// App\Http\Kernel protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, \Imunew\JWTAuth\Middleware\RefreshJwtToken::class, ] ];