我正在尝试使用中间件将未经身份验证的用户重定向到 Google API 身份验证。
如果我直接进入身份验证系统(通过进入 /auth 路线),Google 位将起作用并且用户将被发送到我的主页。但是,如果我进入中间件保护页面,我会得到一个空白页面。
这是我的中间件:
<?php
declare(strict_types=1);
namespace App\Middleware;
use Slim\Psr7\Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
class Auth
{
public function __invoke(Request $request, RequestHandler $handler): Response
{
if (!isset($_SESSION['access_token'])) {
$response = new Response();
$response->withHeader('Location', '/auth')->withStatus(302);
} else {
$response = $handler->handle($request);
}
return $response;
}
}
既然 Google 位可以工作,问题一定出在我的中间件上,对吗?这也意味着中间件的其他部分正在工作。
有什么建议吗?
TIA
原来我写这段代码的时候只是咖啡还没喝够。
我未能将变异响应设置为变量。
在我的 if 语句中应该是:
$response = new Response();
$response = $response->withHeader('Location', '/auth')->withStatus(302);
第二行的“$response =”是我错过的部分。
希望这对其他人有帮助。