我已经使用我的代码注册了会话,并使用以下代码阻止了个人资料的直接访问。
public function profile() {
if ($this->session->userdata('logged_in')) {
//var_dump($this->session->userdata['logged_in']);
$session_data = $this->session->userdata('logged_in');
$data['nric_number'] = $session_data['nric_number'];
$this->load->view('templates/header');
$this->load->view('layouts/employee/profile', $data);
$this->load->view('templates/footer');
} else {
//If no session, redirect to login page
$base = base_url();
redirect($base . 'checkinout', 'refresh');
}
}
假设,我要阻止另一个名为allusers
的控制器。因此,脚本将如下所示 -
public function allusers() {
if ($this->session->userdata('logged_in')) {
$this->load->view('layouts/employee/allusers');
} else {
//If no session, redirect to login page
$base = base_url();
redirect($base . 'checkinout', 'refresh');
}
}
但是,我不想对每种方法使用以下条件。我可以跳过吗?
if($this->session->userdata('logged_in')) {
} else {
}
答案 0 :(得分:2)
只需将代码放在类的构造函数中,这样就不需要在所有方法中检查会话了!
if(!($this->session->userdata('logged_in'))) {
$allowed = array(
'method1',
'method2'
);
if ( ! in_array($this->router->fetch_method(), $allowed) {
redirect('login');
}
}