我已经开发了Codeigniter后端,并且希望与Ionic 3应用程序使用相同的控制器。 Ionic 3登录可与后端控制器完美配合,并创建会话,我将用户数据存储在会话变量中。登录成功后,当我通过Ionic 3访问另一个控制器时,该会话中没有任何用户数据。我需要保留会话数据,直到它在注销时销毁为止,因为无论用户是否登录,每次控制器访问都使用用户数据。这是我的代码。
//main login function
function user_login(){
//Allow Cross origin
header('Access-Control-Allow-Origin:*');
$username = $this->input->post('username');
$password = MD5($this->input->post('password'));
$data = array('status'=>false,'message'=>'','data'=>'');
//check a session exists,if not create new
if(!$this->session->userdata('username')){
$user_data = array(
'username' => $username,
'attempts' => 0,
'logged_in' => false
);
$this->session->set_userdata($user_data);
}
$attempts = $this->session->userdata('attempts'); //get number of tried attempts
$this->session->set_userdata('attempts',($attempts + 1));//increse number of attempts from one
{
$lognError = $this->login_model->get_data_from_login_error_table($username);
$b = true;
if(sizeof($lognError) > 0){
$trialsCount = $lognError['trials_count']; //get number of attempts that tried
if($trialsCount >= 25){
$b = false;
}
}
if($b == true){
$is_login = $this->login_model->login($username,$password);
if($is_login != null) {
$this->session->set_userdata('loged_in', true);
$this->session->set_userdata($is_login);
$this->session->set_userdata('user_details', $user_details);
} else {
$data['status'] = false;
$data['message'] = 'Incorrect username or password';
}
}
}
// }
echo json_encode($data);
}
//检查用户是否登录
public function is_login(){
$details = $this->session->userdata('username');
$is_loged_in = $this->session->userdata('loged_in');
if(!$details || !$is_loged_in) {
redirect('login');
}
}
当我通过Ionic 3访问时,$ this-> session-> userdata('username')返回null,但在浏览器上可以正常工作。如何在ionic 3中使用PHP后端?
帮我解决这个问题。 谢谢你。