0

私はこのコードイグナイターが初めてです。ユーザーの役割が重要な役割を果たすアプリケーションを構築しています。コントローラーでは、ユーザーが特定の役割または権限を持っているかどうかを確認してから、機能へのアクセスを許可したいと考えています。これしか拡張できないのに、コントローラーごとにパーミッションやロールをチェックしなくてもいいようなフローを作れないかと思っていました。そうしてもいいですか?

/** アップデート **/

コントローラーの各メソッドまたはコントローラーの一部のメソッドのみにアクセス許可を設定したい場合はどうすればよいですか。

4

2 に答える 2

4
    <?php
class Secure_area extends CI_Controller 
{

    function __construct($module_id=null)
    {
        parent::__construct();  
        $this->load->model('Employee');
        if(!$this->Employee->is_logged_in())
        {
            redirect('login');
        }

        if(!$this->Employee->has_permission($module_id,$this->Employee->get_logged_in_employee_info()->person_id))
        {
            redirect('no_access/'.$module_id);
        }

        //load up global data
        $logged_in_employee_info=$this->Employee->get_logged_in_employee_info();
        $data['allowed_modules']=$this->Module->get_allowed_modules($logged_in_employee_info->person_id);
        $data['user_info']=$logged_in_employee_info;
        $this->load->vars($data);
    }
}
?>

最初にやりたいことをすべて __construct.... に入れます。

于 2012-08-29T09:55:48.447 に答える
0

こんにちは、同じ問題に直面したシステムを開発しました...以下は私の問題の解決策です

  1. すべてのコントローラー名(または私の問題ではモジュール)を格納する1つのテーブル。例 mod1 mod2 mod3 。.
  2. user1 mod1 0 user1 mod2 1 user1 mod3 1 など、すべてのコントローラのユーザー アクセス許可を格納する 1 つのテーブル。. ユーザー2 mod1 1 ユーザー2 mod2 0 ユーザー2 mod3 1

  3. is_logged_in(){yes:has_permission(){yes:do things....continue, no:redirect(permission denied)}, no:(redirect(login)) } をチェックするファイル (secure_area.php EXTENDS CI_Controller) に作成されます。

  4. そして、すべてのコントローラーは secure_area.php を拡張します。

  5. 管理エリアでは、単純なチェック ボックスを使用してユーザーに権限を付与する関数またはフォームを作成できます。
于 2012-08-29T08:51:15.553 に答える