сегодня у меня есть вопрос о Кляйне, и я спрашиваю, потому что в Интернете не так много документации по этой библиотеке. Я хочу перенаправить пользователя обратно в / login, если они находятся на любой странице, кроме «/ login» или «/ register», и они не зарегистрированы в i, ниже я попробовал:
$this->klein->respond('GET', '!@^/login|register', function ($request, $response, $service, $app) {
if (!Latrina::getLibrary('latrina.user.user')->loggedIn()) {
$response->redirect('/login')->send();
}
});
Это работает, но он перенаправляет на / login, если они включены / register, что довольно раздражает, потому что отключает их регистрацию.
Я лично не проверял, что параметром $ request для этого обратного вызова является строка — это может быть объект или массив с URL-адресом, который необходимо проверить в качестве свойства. Но эта общая логика — это то, что вы ищете:
$this->klein->respond('GET', '!@^/login|register', function ($request, $response, $service, $app) {
if (!Latrina::getLibrary('latrina.user.user')->loggedIn()) {
if (strpos($request, 'login') !== false) {
$response->redirect('/login')->send();
} else {
$response->redirect('/register')->send();
}
}
});
Других решений пока нет …