我已经为我的管理页面创建了一个登录表单,但它确实有效,但是现在每个登录的人都可以访问这些页面。
我的用户也属于用户组,数据库中的用户表有一个group_id列。管理员组的ID为1.
我想要做的是,如果属于管理员组登录的人可以访问管理页面,但如果用户属于不同的组并尝试登录,则可以重定向到主页或任何地方。
我要做的是向管理页面控制器添加类似的代码
class Dashboard extends MY_Controller {
public function __construct() {
parent::__construct();
// Access control
if(!$this->session->userdata('logged_in')) {
redirect('admin/login');
}
}
}
我的模特
class Authenticate_model extends CI_Model {
public function login_user($username, $password){
//Secure password
$enc_password = md5($password);
//Validate
$this->db->where('username',$username);
$this->db->where('password',$enc_password);
$result = $this->db->get('users');
if($result->num_rows() == 1){
return $result->row();
} else {
return false;
}
}
}
答案 0 :(得分:0)
您可以自己动手,提供验证并设置$ SESSION变量以检索用户是否已登录。但这样做太多了,而且容易出错。 我建议你使用这个受欢迎的库:https://github.com/benedmunds/CodeIgniter-Ion-Auth。这很容易设置,你只需要复制一些文件就可以了。
答案 1 :(得分:0)
如果你真的想要自己做(那就是问题)那么你需要在SESSION中存储两个变量--loged_in和is_admin。
我会推荐两个带有函数的创建库:
function is_logged_in($admin = FALSE){
$is_logged = $this->session->userdata('logged_in');
if($admin){
$is_logged = $this->session->userdata('is_admin')
}
return $is_logged;
}
这假设您在SESSION中存储了两个布尔“logged_in”和“is_admin”。(如果用户有group_id = 1,那么您将在is_admin中存储TRUE)
然后,您可以仅保护您的网站会员页面
if(!$this->your_authenticatation_library->is_logged_in()){redirect('notMembersControler')}
和管理页面:
if(!$this->your_authenticatation_library->is_logged_in(TRUE)){redirect('notMembersControler')}
这是基本的想法,你需要根据你的目标来解决。希望这有帮助!