【问题标题】:Angular JS + CodeIgniter: Cannot read session data during $http ajax callsAngular JS + CodeIgniter:在 $http ajax 调用期间无法读取会话数据
【发布时间】:2014-10-12 20:12:01
【问题描述】:

我正在尝试使用 codeigniter 会话来存储 ajax 调用之间的状态。 在其中一个网址中,我正在使用

设置会话
$this->session->set_userdata("user", "harry");

但是当我试图从另一个 url 访问值“user”时,我得到了错误

$this->session->userdata("user");

返回 false。

我在这里做错了什么?我知道会话是在第一个 URL 中设置的,因为在那之后我可以立即回显该值。

【问题讨论】:

    标签: php ajax angularjs codeigniter


    【解决方案1】:

    会话通常会在每次页面加载时全局运行,因此 会话类必须在您的控制器中初始化 构造函数,也可以由系统自动加载

    如果您没有自动加载会话库,请在您的其他控制器将继承的自定义控制器中对其进行初始化,例如 MY_Controller。否则,您需要在每个控制器 __construct() 中加载 Session 库。

    class MY_Controller extends CI_Controller
    {
       public $currentUser = NULL;
    
       public function __construct()
       {
           if(is_null($this->currentUser))
               $this->_checkUserHasLoggedIn();
       }
    
       protected function _checkUserHasLoggedIn()
       {
           // $this->session->set_userdata(array('uid'=>'0'))
           // This would only be set if a user is logged In
           // via a Authentication library
    
           if($this->session->userdata('uid') && $this->session->userdata('uid') !== 0)
           {
                $this->currentUser = new StdClass();
                $this->currentUser->ID = $this->session->userdata('uid');
                $this->currentUser->Group = $this->session->userdata('group');
                $this->currentUser->Name= $this->session->userdata('name');
           }
    
           return;
    
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多