CakePHP - автоматический выход из системы после ограничения времени простоя пользователя - PullRequest
0 голосов
/ 27 июля 2011

Я настроил метатег в своем макете, чтобы гарантировать, что пользователь выйдет из системы по истечении заданного времени, если он не используется.

<meta http-equiv="refresh" content="3600;url=http://www.example.com/users/logout/redirect:%2Fusers%2Faccount" />

Как видите, я пытаюсь передать текущий URL (закодированный) в качестве параметра перенаправления, чтобы при вызове действия выхода из системы и перенаправлении на страницу входа на странице входа было известно, какую страницу перенаправить пользователь вернулся к тому, что он делал, когда система автоматически вышла из него.

Однако, когда происходит автоматический выход из системы, он перенаправляется на http://www.example.com/users/logout/redirect:%2Fusers%2Faccount, как и ожидалось, но я получаю ошибку 404:

/ users / logout / redirect: / users / account не найдено

Что я здесь не так делаю?

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

По крайней мере, я понимаю, что этого невозможно достичь с помощью urlencode из-за того, как слеш будет переведен и обработан Cake. Однако я не уверен в деталях!

Одним из решений было бы использование base64_encode и base64_decode вместо URL-адреса.

Возможно, вы сможете настроить маршрут с помощью regex для правильной обработки дополнительных слешей.

echo 'http://example.com/users/logout/redirect:' . base64_encode('users/account');
//http://example.com/users/logout/redirect:dXNlcnMvYWNjb3VudA==
1 голос
/ 28 июля 2011

Вы можете установить таймаут в основном файле.

Для перенаправления после входа в систему необходимо добавить

$this->Auth->autoRedirect = true;

в app_controller. (См. подготовка к добавлению auth и AuthComponent Class )

Компонент auth заметит, что страница, которую вы пытаетесь увидеть, контролируется. Таким образом, после рендеринга страницы входа она будет хранить URL страницы в сеансе. Чтобы проверить это, вы можете сделать print_r($_SESSION) в окне входа в систему, и вы увидите его под $_SESSION['Auth']['redirect']

И это все =) Удачи

0 голосов
/ 28 июня 2016

Давайте сделаем это проще. Я использую Cake 3.2, но я думаю, что старые версии такие же.

Настройка информации о маршрутах. В Cake 3.2 находится в /config/routes.php

$routes->connect('/logout', ['controller' => 'Users', 'action' => 'logout']);

Теперь вы выйдете, перейдя по URL http://domain.com/logout вместо http://domain.com/Users/logout.

База на вашем метатеге:

<meta http-equiv="refresh" content="3600;/logout" />

Попробуй, у меня это сработало: D

...