【问题标题】:Laravel JWT Auth fetch user if token如果令牌,Laravel JWT Auth 获取用户
【发布时间】:2016-07-18 09:22:09
【问题描述】:

我正在为 Laravel 使用 jwt-auth 包。它工作得很好,但似乎必须对用户进行身份验证。

例如,某些路由不需要身份验证,但如果令牌存在,它仍应对用户进行身份验证。我从 API 向用户显示的参数可能因用户访问的类型而异。所以管理员会得到一些额外的参数。

现在它总是只会抛出不存在的令牌。但它应该正常通过并且存在“IF”令牌,请处理它。

不确定我是否需要为此创建自定义中间件。

class JWTAuthIfPresent
{
    public function handle($request, Closure $next)
    {
        if (JWTAuth::getToken()) {
            JWTAuth::parseToken()->authenticate();
        }

        return $next($request);
    }
}

这似乎可行,但不确定是否有更好的方法或现有包中已有的东西。

编辑:

这也不会处理任何令牌问题,例如token= 或一些无效或过期的令牌。如果设置它仍然应该正常处理令牌。

【问题讨论】:

    标签: php laravel laravel-5 jwt


    【解决方案1】:

    好的,我可以通过简单地扩展现有的身份验证来解决这个问题。

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2021-10-20
      • 2016-08-07
      • 2018-12-04
      • 1970-01-01
      • 2020-07-22
      • 2018-10-21
      • 2017-01-06
      • 2017-02-13
      相关资源
      最近更新 更多