我正在使用ion auth来处理我对控制器的授权,并且我将会话数据存储到数据库中。我可以看到会话信息存储在数据库中。
我以管理员身份登录,我需要更新当前会话数据以显示其他用户已登录,简而言之,我正在尝试通过使用我知道的用户ID更新会话用户ID来模拟用户。
$user = $this->ion_auth->user()->row();
echo "<pre>";
//print_r($res);
echo 'Hello '.$user->email;
echo "</pre>";
$this->db->order_by('id', 'DESC');
$this->db->limit(1);
$last_session = $this->db->get('ci_sessions')->row_array();
print_r($last_session['data']);//prints current session data
第一个echo获取登录用户的正确电子邮件以及正确的会话数据。我的问题是,这一行print_r($last_session['data']);
总是会得到我的会话数据吗?
答案 0 :(得分:0)
不幸的是没有。会话数据总是每隔5分钟(默认)更改一次,这在config.php $config['sess_time_to_update']
中设置。此更改仅更新现有会话记录(如果存在),如果不存在则创建新记录。您可以在system / libraries / Session.php中的Session.php中看到它是如何处理的。
答案 1 :(得分:0)
它无法工作的另一个原因:ci_sessions表中的id不是一个简单的升级整数,它是这样的:5f53811d120de015d8189d72fcfb0a13242b382a。按id排序只会随机排序。最多可以通过“时间戳”来尝试订购。而不是id。
我不确定Jeffrey提到的问题是否与ion_auth有关。