【问题标题】:CodeIgniter: store more information into the sessionCodeIgniter:将更多信息存储到会话中
【发布时间】:2010-02-27 10:13:45
【问题描述】:

这是我在登录控制器中拥有的功能,它将数据存储到数组中,然后设置用户数据

  function validate_credentials()
   {
   $this->load->model('membership_model');
   $query = $this->membership_model->validate();

   if($query):
    $data = array(
     'username' => $this->input->post('username'),
     //add usertype
     //add email
     //add deposit money
     'is_logged_in' => true
    );
    $this->session->set_userdata($data);
    //should redirect to last view
    redirect('home/index');
   else:
    $this->index();
   endif;
  }// end of validate_credentials()

我想存储更多信息,例如用户类型、电子邮件、depost 等...数据存储到数据库中。如何从模型获取数据到控制器?还是不推荐?

例如,如果用户是管理员,我想在视图中检查用户类型,并仅为管理员显示某些选项。

【问题讨论】:

    标签: authentication session codeigniter


    【解决方案1】:

    您可以使用在 CI 中完成的正常 CI 会话处理。

    $this->session->set_userdata('usertype', 'admin');
    

    用于检查用户类型。我通常有一个身份验证类来检查登录的用户是否是管理员。例如

    function logged_in($role = NULL)
    {
        if ( ! $this->CI->session->userdata('logged_in'))
        {
            return FALSE;
        }
    
        if ($this->CI->user->has_role($role, $this->CI->session->userdata('user_id')))
        {
            return TRUE;
        }
        return FALSE;
    } // function restrict()
    

    关于保存信息,使用会话,可能不是最安全的。我通常建议即时检查用户信息,而不是将所有内容都存储在 CI 会话中。

    【讨论】:

    • 在飞行中?您的意思是每次都查询数据库而不是将其存储到会话中。但是,如果您仍然可以让我知道如何将更多信息存储到会话中,会话会更节省。
    • 每次都查询数据库,以便登录时更改了用户类型的用户一加载页面就可以工作。
    • 无论如何,要存储信息你只需要使用 $this->session->set_userdata('usertype', 'admin');
    • 你可以通过 $this->session->userdata('usertype'); 阅读它
    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2020-04-20
    • 1970-01-01
    • 2011-10-15
    • 2012-02-12
    相关资源
    最近更新 更多