ASP.NET MVC 5改進了基于過濾器的身份驗證
英文原文:Improved Authentication with Filters in 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
</blockquote>接口 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來自: InfoQ本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!