【问题标题】:Unable to logout of Yii app & force page to redirect (Yii 1.x)无法注销 Yii 应用并强制页面重定向(Yii 1.x)
【发布时间】: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


【解决方案1】:

尝试在afterLogout 函数中使用Yii::app()->user->homeUrl 而不是Yii::app()->user->returnUrl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多