編程學習網 > 編程語言 > .NET開發 > ASP.NET MVC 5改進了基于過濾器的身份驗證
2014
12-02

ASP.NET MVC 5改進了基于過濾器的身份驗證

  ASP.NET MVC 5包含在最近發布的Visual Studio 2013開發者預覽版中,它使開發人員可以應用身份驗證過濾器,它們提供了使用各種第三方供應商或自定義的身份驗證提供程序進行用戶身份驗證的能力。不過,這些過濾器要在調用授權過濾器之前應用。

  為了創建身份驗證過濾器,開發人員需要新建一個C#ASP.NET工程,并且從列出的工程類型中選擇MVC。來自Kunz,Leigh&Associates公司的高級軟件開發工程師Eric Vogel已經測試了身份驗證過濾器的用法。他創建了一個自定義過濾器,如果用戶未通過身份驗證,就將其重定向回登錄頁面。

  Eric創建了一個CustomAttributes目錄和一個新類CustomeAttribute,該類繼承了

ActionFilterAttribute和IAuthenticationFilter:
public class BasicAuthAttribute: ActionFilterAttribute,IAuthenticationFilter

  接口IAuthenticationFilter的OnAuthentication()方法可以用于執行任何需要的身份驗證,而OnAuthenticationChallenge方法基于已驗證用戶的身份限制其訪問。

  OnAuthenticationChallenge方法接收AuthenticationChallengeContext參數,其實現代碼如下所示:

public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
    var user = filterContext.HttpContext.User;
    if (user == null || !user.Identity.IsAuthenticated)
    {
        filterContext.Result = new HttpUnauthorizedResult();
    }
}

  讀者可以從Eric的博文獲得完整的源代碼。BasicAuthAttribute類很容易測試,打開HomeController類文件,并添加下面的代碼即可:

using VSMMvc5AuthFilterDemo.CustomAttributes;

  最后,將自定義屬性應用到HomeController類,如下所示:

[BasicAuthAttribute]
   public class HomeController : Controller

  英文原文:Improved Authentication with Filters in ASP.NET MVC 5

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取