我的登錄保護成員區域有許多子部分和控制器。檢查整個站點部分的驗證(多個控制器)
爲了檢查用戶是否登錄並允許在那裏,我只是將我的auth->is_logged_in()
方法放在每個控制器的構造函數中。
建立一個基本控制器是否值得創建一個基本控制器,然後在所有成員區域控制器上進行檢查? (最佳做法?)
我的登錄保護成員區域有許多子部分和控制器。檢查整個站點部分的驗證(多個控制器)
爲了檢查用戶是否登錄並允許在那裏,我只是將我的auth->is_logged_in()
方法放在每個控制器的構造函數中。
建立一個基本控制器是否值得創建一個基本控制器,然後在所有成員區域控制器上進行檢查? (最佳做法?)
我創建驗證庫這個
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Auth
{
private $CI;
private $redirect;
function __construct()
{
$this->CI =& get_instance();
$this->redirect = 'home/login';
}
function _redirect($redirect, $rurl)
{
redirect(($rurl == '') ? $this->redirect : $rurl);
}
function check_login($redirect = FALSE, $rurl = '')
{
if($this->CI->session->userdata('logged') == TRUE) {
return TRUE;
}
$this->_redirect($redirect, $rurl);
}
function check_admin($redirect = FALSE, $rurl = '')
{
if($this->CI->session->userdata('user_type') == 'administrator') {
return TRUE;
}
$this->_redirect($redirect, $rurl);
}
}
?>
而這一次是在用戶控制器
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('auth');
// second param is optional // will redirect if not admin //
$this->auth->check_admin(TRUE, 'admin/login');
}
希望這可以幫助你,讓我們知道有沒有什麼...謝謝!!
我會在基礎控制器上爭論。您也可以添加額外的檢查。
我建議你把它叫做Secured_Controller(或類似的東西),使安全控制器的構造帶(可選)訪問級別(所以你可以有一些只是登錄的用戶,有的爲管理員等...)
也使其採取任何訪問級別(但是提供gaurd方法,這樣你就可以在gaurd控制器的具體方法和讓別人跑免費
例:
管理控制器
class Admin_Controller extends Secure_Controller
{
public __construct()
{
parent::__construct(ACCESS_LEVEL_ADMIN);
}
}
部分地固定控制器
class Partial_Controller extends Secure_Controller
{
public __construct()
{
parent::__construct();
}
public function Index()
{
$this->GaurdPermissions(ACCESS_LEVEL_ADMIN); // Would redirect if not enough permissions
}
}