gpt4 book ai didi

php - 如何使用 redis 库在 codeigniter 中通过 sessionid 更改 session 数据?

转载 作者:可可西里 更新时间:2023-11-01 11:28:25 26 4
gpt4 key购买 nike

我们有一个内置于 codeigniter 的管理面板,两种类型的用户可以在其中登录(管理员和 super 管理员)。管理员权限由 super 管理员控制。管理员权限在登录时存储在 session 中。我们使用 codeigniter redis 库来存储 session 数据。

现在的挑战是在 super 管理员更改权限时更新管理员用户 session 数据而不影响管理员登录。

最佳答案

如果您想在运行时执行此操作,我认为使用 Redis 应该不是真正的问题

创建一个预 Controller Hook ,如果用户 session 已更改,您可以在其中检查每个请求

因为你使用了 redis - 你真的不需要使用数据库查询来检查它 - 只需简单地创建一个对象来保存 session 已更改的所有已更改用户并将其保存到 redis

钩子(Hook)看起来像

class AppRefreshSession
{
private $ci;

public function __construct()
{
$this->ci = get_instance();
}

public function initialize()
{
if (!$this->isSessionValid())
{
//refresh users Session
}
}

private function isSessionValid()
{
$obj = $this->ci->cache->redis->get("ModifiedSessions_Object");

if ($obj->hasSessionModified())
{
return false;
}

return true;


}
}

每当 super 管理员更改权限时,您修改后的 session 对象应该填充用户 ID 或类似内容。将此对象保存到 Redis,这应该可以满足您的需求。

关于php - 如何使用 redis 库在 codeigniter 中通过 sessionid 更改 session 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com