Хорошо, я идиот.
Я так расстроился из-за проблем Slim 4 и перенаправления, что взглянул на FatFreeFramework и, черт побери, у меня не было ТОЧНОЙ проблемы. Так что я знал, что это было то, что я делал. Короче говоря ...
Мой код помещал приложение в бесконечный цикл перенаправления. Я могу заставить его работать, проверяя URL-адрес перенаправления, например, в FatFreeFramework:
class Controller {
protected $f3;
public function __construct() {
$isLoggedIn = false;
$this->f3 = Base::instance();
if ($isLoggedIn == false && $_SERVER['REQUEST_URI'] != '/login') {
$this->f3->reroute('/login');
exit();
}
}
}
Поэтому, хотя на самом деле я не потратил время на его тестирование, я предполагаю, что могу исправить это в Slim 4делая что-то вроде:
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
class AuthMiddleware extends Middleware {
public function __invoke(Request $request, RequestHandler $handler): Response {
$response = $handler->handle($request);
$loggedInTest = false;
if (!$loggedInTest && $_SERVER['REQUEST_URI'] != '/user/login') {
return return $response->withHeader('Location', '/users/login')->withStatus(302);
} else {
return $response;
}
}
}
У кого-нибудь есть другая идея о том, как разорвать непрерывный цикл перенаправления? Или переменная $ _SERVER - лучший вариант?
Заранее спасибо.