ログインが保護されているメンバーエリアには、多くのサブセクションとコントローラーがあります。サイト全体の認証の確認(複数のコントローラー)
ユーザーがログインしてそこにいることを確認するため、私は自分の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);
}
}
?>
のための認証ライブラリを作成し、この1つはユーザコントローラ
<?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');
}
希望ですこれは聞かせて、あなたを助けます私たちは何かがあれば知っている...ありがとう!!
私はベースコントローラーで「はい」と主張します。チェックを追加することもできます。
セキュリティコントローラーのコンストラクターを(オプションの)アクセスレベルにするようにしてください...)
またあなたは、コントローラ内の特定のメソッドを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
}
}