2012-03-12 4 views
1

古いmvc 1プロジェクトでは、ユーザーが詳細を編集するオプションを追加しています。私はフォーム認証を使用していません(主に前のコードを大量に変更しないでください)。そのため、現在ログに記録されているユーザーに自分の詳細を編集させる最良の方法を考えようとしています。mvcのアクションへのアクセスを妨げる最良の方法

現在のところ、URLがhttp://localhost:61681/users/edit?userId=29の場合、他のユーザーは他のユーザーの詳細を編集するためにuserIdを変更するだけで済みます。

私が考えることができるのは、userIdがパラメータと一致するかどうかを調べる方法ですが、それを行うより良い方法があるかどうかはわかりません。

私は、私の非常に基本的な知識を示す質問を理解する原因を謝罪しましょう。

おかげ

+0

現在、ログインしているユーザーをどのように追跡していますか?セッション値? – David

+0

認証に前のコードは何を使用していますか? – evasilchenko

+0

ユーザー名のクッキー(実際にはユニークな電子メール)とユーザーID – mitomed

答えて

3

なぜパラメータとすることが、あなたは反対userIdをチェックしているユーザーIDをさせませんか?編集ページに他のユーザーの情報を編集できるようにしていない場合は、userIdパラメータを使用する理由はありません。要求を行ったユーザーを編集できるようにします。すでにログインしているユーザーそしてちょうどそれがために、ユーザのIDと一致するかどうかを確認するためのチェックを追加わかっている場合

+1

まあ、私はあなたを正しく得ていないと思います。これは、現在設定されているクッキーを介して現在のユーザーを取得することを意味しますか?どのようなチェックが必要なのでしょうか?n – mitomed

+0

@mitomed:単にユーザーが本物である(つまり、実際にログインしていて、「this is my user id ... honest!」cookieを偽造していないだけです) 。編集ページが現在のページ以外のユーザーを編集していないと思われる場合は、現在のユーザーが有効であることを確認するだけです。そうであれば、そのユーザーID *の編集ページ*を表示します。 'userId'パラメータ(独自のID以外)がなければ、ユーザが編集できるユーザページは自分だけです。 – cHao

+0

ありがとうございましたcHao、問題は私がクッキーをチェックするよりもユーザーを取得する他の方法を知らないということです。あなたがちょうど私に言ったことから、それはそうじゃない? – mitomed

1
if(currrentUser.Id != userId) 
    return Redirect("http://example.com/access-denied"); 

edited.If、それらを聞かせていないではありません。

+0

ええ、基本的には私が思ったものです。だからあなたはそれが最良の方法だと思う – mitomed

関連する問題