私は現在、Codeigniterというフレームワークでアプリケーションを開発中です。私のプロジェクトは、異なる操作を持つ異なるレベルのユーザーで構成されています。不正なアクセスからユーザを制限する
私はDefault_model
を作成しました。これはデータベースとのすべてのやりとりを処理します。すべてのコントローラーがこの単一のモデルとやりとりします。
各ユーザーは、登録時にユーザーによって指定された指定を持っています(管理者のみがプロファイル承認を取得した後でプロファイルにアクセスします)。
マイimplementaion:
がuser1
をしてみましょうを指定Level1
に登録されていると、彼は名前を使用して操作にアクセスすることができますoperation1
私は、コントローラ内の関数とuser1
アクセスが書かれている現在やっていますwww.example.com/page/operation1
による操作。ここでは、データベースから取得した関数にアクセスする権限がある場合(コントローラのコンストラクタで必要なデータには指定が含まれていますが、セッションではuserid
が設定されています)、ユーザーの指定(==="level1"
)を確認します。 (level1
でない場合)404
が表示されます。
現在、モデルの指定チェックは行っていません。モデル内の関数が呼び出された場合は、データを返します。彼がモデルで許可されているかどうか再度確認する必要がありますか?私のシナリオへのより一般的なアプローチや実装が容易なアプローチはありますか?
更新
コントローラー:page.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Page extends CI_Controller {
public $id;
public function __construct() {
parent::__construct();
//load libraries and model(Default_model) here
$this->id = $this->getData(); //loading data from DB, returns FALSE if session empty
if ($this->id) {
//has data
} else {
$data = array(
'error' => 'Login to continue. <a href="' . base_url() . '">CLICK HERE</a>'
);
$this->load->view('error_view', $data);
}
}
public function operation1()
{
if($this->id->designation === 1)
{
//call model method because he is LEVEL 1 user
}
}
}
関連するコードを表示 –