0

3 つのコントローラーとアクション メソッドを含む MVC 3.0 アプリケーションがあります。アプリケーションはログインベースです。ユーザーが認証されると、ホームページに移動し、3 つのコントローラーのアクション メソッドにマッピングされた 3 つのメニュー リンクが表示されます。ユーザーはリンクをクリックするか、アドレス バーに URL を入力して、それぞれのページに移動できます。

しかし今では、リンクは次のように役割ベースになっています。

IsProductPageAllowed=true の場合、ユーザーのみが ProductPage を表示できます。

IsMediaPageAllowed=true の場合、ユーザーのみが MediaPage を表示できます。

プロパティ値true/falseに応じて、HomePageビューでリンクの可視性を簡単に処理しました。

しかし、アドレスバーに直接URLを入力し、値がfalseの場合、ユーザーがProductPageにアクセスするのをブロックする正しい方法を探していました. true false プロパティをチェックすることで、コントローラーの各アクション メソッドでこれを簡単に行うことができ、値が false の場合はそれに応じて homePage にリダイレクトします。

Controller自体のように、これを行うためのより良い方法を考えていました。

ありがとうございました、

M.

4

2 に答える 2

1

SimpleMembership を使用している場合はRoles、各メンバーシップに割り当ててみませんか。そうすれば、これを実行して、任意のアクションまたはコントローラー全体へのアクセスを制限できます。

[Authorize(Roles="Admin")] 
public ActionResult Contact()
{
   ViewBag.Message = "Your contact page.";
   return View();
}

上記のコードでは、管理者ユーザーのみがそのアクションにアクセスできます。コントローラー全体を制限したい場合[Authorize(Roles="Admin")]は、コントローラー名の上に置くだけです。

ロールをデータベースにシードする方法についてサポートが必要な場合は、こちらの Kevin のブログをお読みください。

于 2013-02-13T08:11:19.243 に答える
1

すべてのリクエストをインターセプトし、処理前に承認するカスタム セキュリティ フィルタを定義します。認証が成功しない場合、ユーザーは不十分なアクセス許可のエラー ページにリダイレクトされます。

権限は、特定のロールがコントローラーの特定のアクションを呼び出すことができるかどうかに関するものです。ログインしていない場合にユーザーをログインページにリダイレクトする基本的な承認もあります。

于 2013-02-13T08:31:44.820 に答える