【发布时间】:2015-04-27 09:20:56
【问题描述】:
我正在尝试让我的 Yii 应用在特定类型的用户登录后的设定秒数后自动注销。
我对我的 protected/components/WebUser.php 文件进行了以下修改:
public function init() {
parent::init();
if (($user = $this->getState('userModel')) !== null) {
$this->setUserData(unserialize($user));
if ($this->isNonAdminUser()) {
$this->authTimeout = 3600; // 1 hour timeout
}
}
$this->updateAuthStatus();
}
// function automatically directly after $this->logout()
protected function afterLogout() {
Yii::app()->request->redirect(('site/front/login'));
//Yii::app()->request->redirect((Yii::app()->user->returnUrl));
}
这基本上会在 1 小时无活动后将“非管理员用户”从会话中注销 - 这可行,但我也希望能够“强制”他们回到主页。我尝试在 afterLogout() 中使用重定向功能,但由于某种原因它似乎没有进行重定向?
有什么想法为什么不呢?
注意 - 我使用的是 Yii 1.x
【问题讨论】:
-
你确认
afterLogout()真的被调用了吗?除此之外,returnUrl将是查看的最后一页而不是主页。 -
使用 returnUrl 的东西很好。这一切都注销了,它确实命中了 afterLogout(),因为我在重定向中输入了一个随机路径,但是我想告诉我的应用程序在可能的情况下自动重定向回重定向 url。注意 - 注销一切正常,一旦时间到期,如果我按 F5 并重新加载我已注销并重定向的页面 - 我只是想取出我按重新加载的手动元素(如果可能)
-
嗯,我明白了。这只有在 javascript 和 ajax 的帮助下才有可能。基本上,您设置一个计时器以在 3600 秒后调用一个函数,该函数检查用户是否应该注销。如果是这样,请在 javascript 中进行位置重定向。
标签: php session yii yii-cactiverecord