设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

ASP.NET MVC 5改进了基于过滤器的身份验证

2013-9-10 14:43| 发布者: 红黑魂| 查看: 1089| 评论: 0|来自: InfoQ

摘要:   英文原文:Improved Authentication with Filters in ASP.NET MVC 5   ASP.NET MVC 5包含在最近发布的 Visual Studio 2013 开发者预览版中,它使开发人员可以应用身份验证过滤器,它们提供了使用各种第三方供 ...

  英文原文: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


  接口 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

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部