Laravel JWT Auth 获取用户令牌
Laravel JWT Auth fetch user if token
我正在为 Laravel 使用 jwt-auth 包。它运行良好,但似乎必须对用户进行身份验证。
例如,某些路由不需要身份验证,但如果令牌存在,它仍应对用户进行身份验证。我从 API 向用户显示的参数可能因用户访问类型而异。所以管理员会得到一些额外的参数。
现在它总是会抛出 token absent。但它应该正常通过并且 "IF" 令牌存在,处理它。
不确定我是否需要为此创建自定义中间件。
class JWTAuthIfPresent
{
public function handle($request, Closure $next)
{
if (JWTAuth::getToken()) {
JWTAuth::parseToken()->authenticate();
}
return $next($request);
}
}
这似乎可行,但不确定是否有更好的方法或现有包中已有的东西。
编辑:
此外,这不会处理任何令牌问题,例如 token=
或某些无效或过期的令牌。如果设置,它仍应正常处理令牌。
好的,我可以通过简单地扩展现有的身份验证来解决这个问题。
namespace App\Http\Middleware;
use JWTAuth;
use Closure;
use \Tymon\JWTAuth\Middleware\GetUserFromToken;
class JWTAuthIfPresent extends GetUserFromToken
{
public function handle($request, Closure $next)
{
if (JWTAuth::getToken()) {
return parent::handle($request, $next);
}
return $next($request);
}
}
我正在为 Laravel 使用 jwt-auth 包。它运行良好,但似乎必须对用户进行身份验证。
例如,某些路由不需要身份验证,但如果令牌存在,它仍应对用户进行身份验证。我从 API 向用户显示的参数可能因用户访问类型而异。所以管理员会得到一些额外的参数。
现在它总是会抛出 token absent。但它应该正常通过并且 "IF" 令牌存在,处理它。
不确定我是否需要为此创建自定义中间件。
class JWTAuthIfPresent
{
public function handle($request, Closure $next)
{
if (JWTAuth::getToken()) {
JWTAuth::parseToken()->authenticate();
}
return $next($request);
}
}
这似乎可行,但不确定是否有更好的方法或现有包中已有的东西。
编辑:
此外,这不会处理任何令牌问题,例如 token=
或某些无效或过期的令牌。如果设置,它仍应正常处理令牌。
好的,我可以通过简单地扩展现有的身份验证来解决这个问题。
namespace App\Http\Middleware;
use JWTAuth;
use Closure;
use \Tymon\JWTAuth\Middleware\GetUserFromToken;
class JWTAuthIfPresent extends GetUserFromToken
{
public function handle($request, Closure $next)
{
if (JWTAuth::getToken()) {
return parent::handle($request, $next);
}
return $next($request);
}
}