如果令牌,Laravel JWT Auth获取用户

时间:2016-03-30 11:38:38

标签: php laravel laravel-5 jwt

我正在使用Laravel的jwt-auth包。它运行良好,但似乎用户必须进行身份验证。

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

现在它总是只丢弃令牌。但它应该正常,并且存在“IF”令牌,处理它。

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

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

        return $next($request);
    }
}

这似乎有效,但不确定现有包装中是否有更好的方法或内容。

修改

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

1 个答案:

答案 0 :(得分: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);
    }
}