2011-01-13 18 views
1

Request.IsAuthenticatedのチェックを自分のMasterPageに追加したいのですが(COntroller?そのようなことはありますか?)。これは可能ですか?チェックが失敗した場合、NoAccess.aspxページにリダイレクトします。ASP.Netマスター認証のMVC認証チェック

答えて

3

MVCの概念は、マスターで共通のロジックを実行するWebフォームとは異なります。

ASP.NET MVCマスターページには、UI関連の設定のみが含まれている必要があります。

MVCでは、アクションフィルタを使用します。アクションを[Authorize]で飾ります。

2

デフォルトのMVCプロジェクトテンプレートを使用してプロジェクトを作成しましたか?あなたが探しているものはすべてそこにあります。もしあなたが先に進み、今作成していなければ。

あなたがそこにいると、@Aliostadとして述べられているように、[Authorize]の属性に気付くでしょう。これらは、コントローラレベルで検証を行うカスタム属性です。

はそれをすべて一緒に噛み合う方法についてのより詳細な実行ダウンのためのWebフォームのセキュリティ上のMVCのチュートリアルをチェックアウト:http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs

2

独自のカスタム認証属性を作成することによって、これを達成することができます。

、あなたのホームコントローラと承認とその他の必要なコントローラがこれはunathenticatedユーザーをリダイレクトします

[NoAccessDirectAuthorizeAttribute] 
public class HomeController : Controller 

属性飾るプロジェクト内の新しいフィルタのフォルダを作成し、

public class NoAccessDirectAuthorizeAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
      filterContext.Result = new RedirectResult("noaccess.aspx"); 
    } 
} 

次のクラスを追加しますnoaccess.aspxページへ