Как мне создать кнопку выхода из системы в строке меню, отображаемой помощником вида?
В моем модуле есть панель subnav, созданная из частичного представления с помощью помощника.
Вот конфиг в module.config.php:
'navigation' => array(
'default' => array(
array(
'label' => 'Create',
'route' => 'mymodule\Create',
),
array(
'label' => 'View',
'route' => 'mymodule\view',
),
array(
'label' => 'Search',
'route' => 'mymodule\search',
),
array(
'label' => 'Log Off',
'route' => 'mymodule\logoff',
),
),
),
);
Итак, вот моя проблема: я не просто хочу перенаправить пользователя на страницу входа в систему, я хочу очистить его сеанс и ТОГДА перенаправить его на страницу входа. Я также не хочу, чтобы страница входа в систему просто очищала сеанс всякий раз, когда пользователь переходит на него (в случае, если он вошел в систему и случайно нажал кнопку "Назад").
Так каков наилучший способ справиться с этим с моей текущей конфигурации? Я думал, что мог бы иметь своего помощника вида, который визуализирует частичную установку флага в сеансе, который страница входа будет читать и действовать соответственно - он будет проверять наличие флага "logoffButtonPress" в сеансе или что-то в этом роде. Но уместно ли делать что-то подобное в помощнике вида? Это даже возможно в помощнике представления?
2 ответа
Почему бы просто не нацелить кнопку logoutAction
?
я использую BjyAuthorise
а также ZfcUser
модули, но процесс очистки сеанса и перенаправления одинаков.
LoginController
public function logoutAction()
{
$this->authService->logout();
$redirect = $this->params('redirect', false);
if ($redirect) {
return $this->redirect()->toUrl($redirect);
}
return $this->redirect()->toRoute(
$this->config->getLogoutRedirectRoute()
);
}
AuthService
public function logout()
{
$adapter = $this->authService->getAdapter();
$adapter->resetAdapters();
$adapter->logoutAdapters();
$this->authService->clearIdentity();
}
Как говорит Алекс, это способ сделать это.
Этот код правильный
array(
'label' => 'Log Off',
'route' => 'mymodule\logoff',
),
Итак, вам нужно установить действие выхода из системы по маршруту "mymodule\logoff", очистить сеанс и перенаправить пользователя на вход в систему или на дом или что вы хотите.
При входе в систему вам не нужно очищать сессию.