我已设置ion auth以在数据库中存储会话信息。 ci_session表包含以下字段
id,ip_address,timestamp,data
我可以使用此代码
获取当前会话的数据$this->db->order_by('id', 'ASC');
$this->db->limit(1);
$last_session = $this->db->get('ci_sessions')->row_array();
print_r($last_session['data']);//prints current session data
我希望能够动态切换登录用户,并且我已经从这个要点借用了这个功能https://gist.github.com/anonymous/4440000
我已经修改过这种方式
public function impersonate()
{
$identity = 'admin@admin.com';
$goall = $this->config->item('identity', 'ion_auth');
$query = $this->db->select($goall . ', username, email, id, active, last_login')
->where($goall, $this->db->escape_str($identity))
->limit(1)
->get('users');
if ($query->num_rows() === 1)
{
$user = $query->row();
$session_data = array(
'identity' => $goall,
'username' => $user->username,
'email' => $user->email,
'user_id' => $user->id, //everyone likes to overwrite id so we'll use user_id
'impersonating' => true
);
$this->session->set_userdata($session_data);
return TRUE;
}
else {
return FALSE;
}
}
ci_sessions中的数据列如下所示
__ci_last_regenerate|i:1491200360;identity|s:15:"admin@admin.com";email|s:15:"admin@admin.com";user_id|s:1:"1";old_last_login|s:10:"1491199371";last_check|i:1491200371;message|s:29:"<p>Logged In Successfully</p>";__ci_vars|a:1:{s:7:"message";s:3:"old";}
为了能够切换用户,我想更新数据列以反映新用户的详细信息。
我试过json解码数据列数据,但它无效的json。您也可以使用此工具http://freeonlinetools24.com/json-decode
如何更新数据字段inroder以便能够切换登录的用户?。
答案 0 :(得分:0)
这是一个可怕的,非常可怕的解决方案。您不应该需要解码其他用户的会话数据;我建议你找到另一种方法来实现你想做的任何事情。