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
OnIAuthenticationFilter的OnAuthentication()方法可以用於執行任何需要的身份驗證。
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