0

ここでは、追加オプションを備えた追加/削除/表示などの必要なすべてのメソッドを備えたアプリケーションを開発しましたが、ユーザーのタイプに応じてページを分離する必要があります。たとえば、ユーザーには READ 権限のみがあり、管理者にはすべてのタイプのアクセス権があります。

セッション変数をロールとして使用し、限られたメソッドへのアクセスを許可することでこれを克服する解決策を見つけましたが、問題は、ユーザーまたは管理者であってもすべてのユーザーが簡単にアクセスできる URL を介してメソッドに直接アクセスする場合です。

このアクセスを制御する方法は?

4

1 に答える 1

0

コントローラーメソッドの例

public function add(){
    //only allow administrators
    if($this->session->userdata('user_type') != 'admin'){
         //do whatever you want here, redirect user to some place (login) or show an error
         $data['error'] = 'You do not have necessary permissions';
         $this->load->view('view-file', $data);
   }else{
        //ok so user is admin, now do the rest of the job
   }
}

上記の方法は、各方法で手動で確認する必要があります。より良い方法は、を作成し、MY_Controllerそこに共通のロジックを持たせることです

class MY_Controller extends CI_Controller{
    public function adminCheck(){
        if($this->session->userdata('user_type') != 'admin'){
            $data['error'] = 'No permission';
            $this->load->view('view-file', $data);
            exit();
        }
    }
}

そして、通常のコントローラーメソッドでは、関数を呼び出すだけですadminCheck()

于 2013-10-09T10:41:20.460 に答える