2011-02-01 11 views
0

通常、codeigniter mvcコントローラは、コントローラ関数のパラメータとしてidを受け入れます。たとえば、 /photo/edit/1codeigniter許可されるユーザアクション

ユーザーは、フォトコントローラからイメージID 1を編集します。ユーザーが誰か他の人の画像を編集するのを防ぐベストプラクティスは何ですか?たとえばID 2を編集していますか?ログインしたユーザーはまだ画像2を編集できるので、制限はログインしているユーザーを確認するだけではありません。

権限関数を実装するライブラリを作成すると思っていました。すべてのコントローラー機能。ユーザーIDとURLをライブラリ関数に渡します。ライブラリ関数には、ユーザーがその関数を実行できるかどうかを検証するロジックが含まれています。この場合、イメージを編集します。

私が見ている問題は、私のサイトのすべての機能のロジックコードを書くのが面倒なことです。それぞれ異なるロジックです。より一般的に実践された方法がありますか?

答えて

3

あなたは一般的にコントローラー自体のチェックを行います。したがって、現在ログインしているユーザーとdbのフォトオブジェクトがある場合は、写真の所有者をdbレコードに保存して比較します。

本当に面倒なことではありません。オブジェクトの操作を処理する前に、オブジェクトの所有権を確認するだけです。

例...

if ($the_user->id == $the_photo->owner_id) { 
    //allow their actions 
} 
else { 
    redirect('/'); //if not, kick em out 
} 
関連する問題