0
我們有一個內置在codeigniter中的管理面板,其中有兩種類型的用戶登錄(admin和super admin)。管理員權限由超級管理員控制。管理員權限在登錄時存儲在會話中。我們使用codeigniter redis庫來存儲會話數據。如何使用redis庫在codeigniter中通過sessionid更改會話數據?
現在,當超級管理員更改權限時,更新管理員用戶會話數據時不會影響管理員登錄。
我們有一個內置在codeigniter中的管理面板,其中有兩種類型的用戶登錄(admin和super admin)。管理員權限由超級管理員控制。管理員權限在登錄時存儲在會話中。我們使用codeigniter redis庫來存儲會話數據。如何使用redis庫在codeigniter中通過sessionid更改會話數據?
現在,當超級管理員更改權限時,更新管理員用戶會話數據時不會影響管理員登錄。
,如果你想這樣做在運行時我想用的Redis它不應該是一個真正的問題
創建預控制器掛鉤,你在每次請求檢查,如果用戶會話已經改變
,因爲你使用Redis的 - 你真的不需要使用DB查詢,以檢查它 - 只是簡單地創建它包含所有用戶更改其會話已更改的對象,並將其保存到Redis的
鉤可能看起來像
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;
}
}
只要superadmin更改權限,修改後的會話對象就應該用用戶id或類似的東西填充。 保存這個對象到redis中,並且應該幾乎做你想要的。