【发布时间】:2015-04-12 10:52:34
【问题描述】:
我正在将 Code Igniter 用于 Web 项目。
我有两个不同的用户,一个基本用户和一个管理员用户。
我只是通过在我的数据库中有一个名为 admin 的列等于“是”或“否”来区分管理员用户和基本用户
我有两个控制器,一个控制器纯粹用于登录验证(login.php),另一个用于网页管理等(site.php)。
我想让页面只对管理员用户可用。这是我的登录控制器中我的代码的 sn-p,它当前在成功登录时重定向我的用户以及设置会话数据。..
if ($this->input->post('btn_login') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username, $password);
if ($usr_result) //active user record is present
{
//set the session variables
$sessiondata = array(
'username' => $username,
'loginuser' => TRUE
);
$this->session->set_userdata($sessiondata);
if($usr_result->admin == 'Yes')
redirect("site/admin");
else
redirect("site/agent");
}
这是我的主控制器的 sn-p,它管理我的页面等(site.php):
public function admin(){
$data["title"]="My Admin";
$this->load->model("notifications");
if ($this->session->userdata('loginuser')){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->view('adminpage', $data);
$this->load->view("site_footer");
} else {
redirect('site/restricted');
}
}
public function restricted(){
$this->load->view("restricted");
}
现在你可以从我上面的 sn-p 中看到方法 admin() 我有一个 if 语句,只有登录用户才能登录到这个页面,否则显示受限页面。
如何更改此代码以仅允许具有列 admin = Yes 的用户访问此页面?目前我所有的用户管理员都可以访问这个页面。
我希望这是有道理的,提前谢谢你!
【问题讨论】:
-
通常我会在登录后的会话中保存
user_id。我使用 user_id 进行查询,它将为我提供用户信息。现在我检查此 user_id 是否有权访问此方法或控制器。我建议使用@bandrei2408 答案。您可以在会话中存储user_id而不是username。其他解决方案也不错
标签: php codeigniter authentication login