Codeigniter 正在检查整个站点部分的身份验证(多个控制器)
“我的登录受保护的成员”区域有许多子部分和控制器 为了检查用户是否已登录并允许登录,我只是将我的Codeigniter 正在检查整个站点部分的身份验证(多个控制器),codeigniter,Codeigniter,“我的登录受保护的成员”区域有许多子部分和控制器 为了检查用户是否已登录并允许登录,我只是将我的auth->is\u logged\u in()方法放在每个控制器的构造函数中 是否值得创建一个包含此签入的基本控制器,然后为所有成员区域控制器扩展此签入?(最佳实践?我会在基本控制器上说是。您也可以添加其他支票 我建议您将其称为Secured_Controller(或类似的东西),使Secured Controller的构造函数具有(可选)访问级别(因此您可以为刚登录的用户提供一些访问级别,为管理员
auth->is\u logged\u in()
方法放在每个控制器的构造函数中
是否值得创建一个包含此签入的基本控制器,然后为所有成员区域控制器扩展此签入?(最佳实践?我会在基本控制器上说是。您也可以添加其他支票 我建议您将其称为Secured_Controller(或类似的东西),使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
}
}
部分安全控制器
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
}
}
我为此创建了Auth库
<?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');
}