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