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

最新文章

  1. 《JavaScript 代码优化指南》
  2. python中转义用法 r''
  3. shell <<EOF
  4. RNN 入门教程 Part 3 – 介绍 BPTT 算法和梯度消失问题
  5. CF 461B Appleman and Tree 树形DP
  6. 日志组件logback的介绍及配置使用方法
  7. 如何解决因为找不到Notepad++的安装路径而导致的不能更新CS-Script的问题
  8. bzoj2395: [Balkan 2011]Timeismoney
  9. 实现SQLServer数据库转成MYSQL数据库
  10. 数据结构 - AVL木
  11. Java Enum使用演示样品枚举
  12. 第二次冲刺spring会议(第五次会议)
  13. kubernetes实践之五:深入理解Service及内部DNS搭建
  14. JavaScript中的 NaN 与 isNaN
  15. 【转】QT 添加外部库文件
  16. 个人 git-hub使用方法
  17. Java进程和线程关系及区别
  18. C语言实现字符串逆序输出
  19. element-ui 组件源码分析整理笔记目录
  20. ZVAL——PHP源码分析

热门文章

  1. GHOST系统锁定主页常用软件及解决方案
  2. [转]GameObject的Active与InActive
  3. jquery ajax请求时,设置请求头信息
  4. Ajax发送POST请求的心路历程
  5. Know How To Use Check Box Mapping Of Other Values Property In Oracle Forms
  6. VSFTP安全加固
  7. 迷你sql profile,给缺少sql跟踪的朋友们
  8. python_way day15 HTML-DAY2 HTML-DAY2、JS
  9. 杭电HDU1042(有点坑的高精度)
  10. Cocos2d-x优化中纹理优化