运维开发网

安全性 – 如何在不活动一段时间后在SilverStripe 3.1.x中注销管理员?

运维开发网 https://www.qedev.com 2020-06-15 09:21 出处:网络 作者:运维开发网整理
在SilverStripe 3.1.x中处于不活动状态一段时间后,如何使管理员会话失效?这有配置选项吗? 我搜索并找到了以下代码片段,当放置在Page_Controller类中时,它适用于前端用户,但在管理区域中完全无效. public function init() { parent::init(); self::logoutInactiveUser(); } public
在SilverStripe 3.1.x中处于不活动状态一段时间后,如何使管理员会话失效?这有配置选项吗?

我搜索并找到了以下代码片段,当放置在Page_Controller类中时,它适用于前端用户,但在管理区域中完全无效.

public function init() {
    parent::init();
    self::logoutInactiveUser();
}


public static function logoutInactiveUser() {
    $inactivityLimit = 1; // in Minutes - deliberately set to 1 minute for testing purposes
    $inactivityLimit = $inactivityLimit * 60; // Converted to seconds
    $sessionStart = Session::get('session_start_time');
    if (isset($sessionStart)){
        $elapsed_time = time() - Session::get('session_start_time');
        if ($elapsed_time >= $inactivityLimit) {
            $member = Member::currentUser();
            if($member) $member->logOut();
            Session::clear_all();
            $this->redirect(Director::baseURL() . 'Security/login');
        }
    }
    Session::set('session_start_time', time());
}

超过1分钟不活动后,管理员用户仍然登录并且会话未超时.

对于像我这样的人仍然在寻找解决方案,有一个更简单的选择.事实证明,目前唯一的好解决方案是禁用LeftAndMain.session_keepalive_ping,而 simon_w的解决方案因为ping而无法正常工作.此外,禁用此ping不应导致数据丢失(至少不会导致SilverStripe 3.3),因为用户在尝试提交其工作时将显示覆盖.验证其凭据后,他们的数据将照常提交给服务器.

此外,对于那些(像我一样)寻找解决方案如何通过LeftAndMain.session_keepalive_ping使用_config.yml覆盖CMS ping的人继续阅读.

简单修复:在你的mysite / _config.php中,只需添加:

// Disable back-end AJAX calls to /Security/ping
Config::inst()->update('LeftAndMain', 'session_keepalive_ping', false);

这将阻止CMS刷新会话,该会话将在幕后自然过期(并且不会在下一个请求时提交).这样,您可能已经在_config.yml中指定会话超时的设置实际上会受到尊重,并允许您注销在CMS中处于非活动状态的用户.同样,由于第一段中提到的原因,数据不应丢失.

您可以选择手动覆盖mysite / _config / config.yml中的会话超时值,以帮助确保它在某个明确的时间(例如,下面30分钟)实际到期:

# Set session timeout to 30min.
Session:
  timeout: 1800

你可能会问:为什么这有必要?

因为,虽然阻止你将LeftAndMain.session_keepalive_ping设置覆盖为false的错误(或功能?)据说在framework PR #3272修复了,但实际上很快就会在PR #3275恢复

我希望这可以帮助其他人像我一样对这种情况感到困惑!

0

精彩评论

暂无评论...
验证码 换一张
取 消