2009-06-03 5 views
0

ASP.Net MVCにタスクを記録するアプリケーションを構築しています。正しいユーザーにASP.NET MVCのコントローラを固定

ユーザーは自分のタスクだけを削除できます。他のユーザーに属するタスクの[id]パラメーターを使用して、別のユーザータスクを削除するだけで、削除されたコントローラーURLを入力するだけで、ログインしている別のユーザーを防ぐ標準的な方法はありますか?

例:

ユーザAは、ユーザAがタスクを表示すると、/タスクへのリンクが存在する13のIDを持つタスクを有している//13は、タスクレコードを削除する削除します。ユーザーBはタスク13を表示してから、アドレスバーに/タスク/削除/ 13を入力することを決定し、したがってユーザーAのタスクを削除することができます。

これを防ぐためにコントローラ内に独自のコードを記述する必要がありますか?これは通常処理される標準的な方法ですか?

多くの感謝!

答えて

1

NerdDinnerアプリケーションは、そのディナーコントローラにそのような例があります。

http://nerddinner.codeplex.com/

これを行う方法については、ここでは、次のとおりです。
http://nerddinnerbook.s3.amazonaws.com/Part9.htm

あなたは、見出しが表示されるまで

Goは半分ほどページダウン:User.Identity.Nameプロパティを使用を作成ディナーおよびディナーの編集時にUser.Identity.Nameプロパティを使用する。

1

ASP.NET MVCのセキュリティに関しては、認証と承認があります。

認証は、ユーザーのIDを検証するプロセスであり、通常はデータベースに対してユーザー名とパスワードを確認し、そのユーザーに何らかのユーザーIDを割り当てます。

承認は、システムリソースへのアクセスを制限するプロセスであり、しばしば役割(RBAC)を介して行われます。しかし、役割は、多くの場合、あなたが後にしているものです所有権をカバーしていません。あなたが必要になりますあなたの場合は

以下のようなタスクの所有権の確認を実行するために独自のコードを書くために:

if (!task.IsOwnedBy(userID)) 
{ 
    throw new HttpException ((int)HttpStatusCode.Unauthorized, 
          "You are not authorized."); 
} 

を私はここに同様の質問How do you weave Authentication, Roles and Security into your DDD?を尋ね、私は私のビジネス層にこれを統合するつもりだ方法を決定するためには至っていない

関連する問題