Php Laravel JWT身份验证获取用户if令牌
我在用拉威尔的包裹。它工作得很好,但似乎用户必须经过身份验证 例如,某些路由不需要身份验证,但如果令牌存在,它仍然应该对用户进行身份验证。根据用户访问的类型,我从API向用户显示的参数可能会有所不同。因此管理员将获得一些额外的参数 现在,它总是会抛出令牌。但它应该像平常一样通过,并且“如果”令牌存在,则处理它 不确定是否需要为此创建自定义中间件Php Laravel JWT身份验证获取用户if令牌,php,laravel,laravel-5,jwt,Php,Laravel,Laravel 5,Jwt,我在用拉威尔的包裹。它工作得很好,但似乎用户必须经过身份验证 例如,某些路由不需要身份验证,但如果令牌存在,它仍然应该对用户进行身份验证。根据用户访问的类型,我从API向用户显示的参数可能会有所不同。因此管理员将获得一些额外的参数 现在,它总是会抛出令牌。但它应该像平常一样通过,并且“如果”令牌存在,则处理它 不确定是否需要为此创建自定义中间件 class JWTAuthIfPresent { public function handle($request, Closure $next)
class JWTAuthIfPresent
{
public function handle($request, Closure $next)
{
if (JWTAuth::getToken()) {
JWTAuth::parseToken()->authenticate();
}
return $next($request);
}
}
这似乎可行,但不确定现有包中是否有更好的方法或其他方法
编辑:
此外,这不会处理任何令牌问题,如
令牌=
或一些无效或过期的令牌。如果设置了,它仍然可以正常处理令牌。好的,我可以通过简单地扩展现有的auth来解决这个问题
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);
}
}