【发布时间】:2019-10-02 22:47:45
【问题描述】:
我们有 2 个身份验证中间件应用于特定路由,“external_token”和“auth:api”。当出现外部不记名令牌时,我们会对其进行检查,如果所有值都正确,则认为用户有权访问请求的 url。
我们如何处理除护照验证之外的所有其他中间件?
public function handle(Request $request, Closure $next)
{
$token = $request->header('Bearer');
try {
list($JWTHeader, $JWTPayload) = JWT::verify($token, JWT::TYPE_ID_EXTERNAL);
$this->user = User::where('external_id', $JWTPayload['external_id'])->first();
// Can we just set $this->user and process all other middlewares except auth?
} catch (Exception $e) {
Log::debug($e);
}
$response = $next($request);
return $response;
}
【问题讨论】:
-
您的回复必须将您发送到不包括
auth中间件的地方。 -
我们仍然希望用户最终到达他们要去的地方,但只是绕过 auth 中间件。所以基本上会有2个重定向?首先重定向到除了护照以外的所有路由,然后第二个路由到他们请求的 uri?
-
我假设至少有两个目的地,为了满足处理除身份验证之外的所有中间件,您需要一个介于身份验证之间的目的地。或者,您可以通过更新相应的中间件并将请求和闭包发送到 handle 方法来手动处理它们(不确定这将如何表现)。