2011-07-13 11 views
0

ユーザーがプロファイルを作成し、36文字のプロファイルIDを使用できるようにしました。 users/profile.ctpファイルはもともとCakeで焼いたusers/view.ctpファイルです。CakePHP:ユーザーが他のユーザーのビューとメソッドにアクセスするのを防ぐ

私は他のユーザーがお互いのプロフィールまたは編集ページにアクセスすることを防ぎたい

example/users/profile/3213123-12313-12313-4544534のようなURLが見えます。例えば達成/編集

ACLで特定のアクションをブロックしますが、ユーザーは同じアクセス権を持つ同じ「グループ」にあります。

ユーザーがプロフィール/方法にしかアクセスできないこと、およびURLを介して他のユーザープロフィールにアクセスするユーザーがホームページにリダイレクトされることを確認するにはどうすればよいですか。私はこれを高度なACLで行うべきか、ここでは簡単なコードを紛失しますか?

おかげ

答えて

1

ユーザーが接続されているとき、彼の情報は、セッション内に留まります。したがって、あなたのUsersControllerでは、次のようなことができます:

function profile($user_id){ // let's say that the 36chars is the user's id 
    if($user_id !== $this->Auth->user('id')){ 
     $this->cakeError("error404"); // or redirect to a view saying that he doesn't have access 
    } 

    // ... do your stuff 
} 

多分、異なるコントローラの異なるメソッドで同じことをする必要があります。これを行うためにComponentを作成するか、AppControllerにメソッドを追加することができます。

Good Luck!

+0

ありがとうございます。私はまだそれを試していない。私がどれくらい後に来るかを後で投稿します。 – ChrisDK

+0

私はこれを実際に多くの場所でこれを必要とするため、コンポーネントを作成しています – ChrisDK

関連する問題