2009-05-24 10 views
1

MVCを使用しているC#では、特定のconditinがログインページにリダイレクトする必要がない場合に共通のユーティリティまたはクラスを作成します。セッションチェックの条件でログインページにリダイレクト

例:ユーザーがWebサイトにログインすると、セッションにuseridが追加されます。 「ManageUsers」ページにアクセスするには、管理者としてログインする必要があります。そうでなければ、ログインページにリダイレクトする必要があります。他の同様のページでもこの状態を確認する必要があります。私はログイン中にユーザーが管理者か通常のユーザーかをチェックしたくない。私は共通のクラスでこれをチェックする必要があります。

どのような主張ですか?

[Authorize(Roles="Administrators")] 
public AcitonResult ManageUsers() { 

return View(); 

} 

それとも

[Authorize(Users="Admin,SomeUser")] 
public AcitonResult ManageUsers() { 

    return View(); 

} 

もっとに関する情報:
http://www.asp.net/learn/mvc/tutorial-17-vb.aspx

答えて

1

でセットアップのMembershipProviderとRoleProviderの両方を考える必要があります。私は、ユーザーが実行できない操作を無効にする(または非表示にする)べきだと思います。ユーザーがURLを手で入力するか、特権を持っているときにブックマークを使用する場合は、ログインページにリダイレクトするのではなく、エラーメッセージを表示します。

あなたがあなたのアプリケーションにログインしているとします。ユーザーインターフェイス要素をクリックすると、ログアウトしたように見えます。あなたはそれを使うべきではないことを知る方法がありません。要素を無効/非表示にすると、このシナリオはほとんどのユーザーには発生しません。エラーにリダイレクトすると、ユーザーが期待した結果が得られなかった理由について、貴重なフィードバックがユーザーに伝わります。

この効果を得るには、AuthorizeAttributeから派生したカスタム属性を使用します。ユーザーがログインしていない場合は、ログインページにリダイレクトされます。ログインしているが十分に権限がない場合は、適切なエラー・ビューが表示されます。

1

これは、すでに承認属性とASP.NET MVCに存在します確認:

... 
<forms loginUrl="~/your_login_page" defaultUrl="~/"> 
... 

また、あなたが実際に私は、これは用途に特に優れた動作ではありません、あなたのweb.configファイル

+0

コントローラーとアクション(ページ)に基づいて共通クラスの条件をチェックし、ユーザーをログインにリダイレクトする必要があります。 ロールベースのチェックだけでなく、私は文字列等価チェック(UserName == "Prasad")のように、いくつかの条件もチェックする必要があります。 – Prasad

1
[Authorize(Roles = "Admin")] 
public ActionResult ManageUsersController() 
{ 
    ... 
} 

あなたのweb.configファイルで

関連する問題