MVC 5中的身份验证过滤器

Mur*_*san 15 c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

发行说明页面中的验证过滤器

身份验证过滤器是ASP.NET MVC中的一种新过滤器,它在ASP.NET MVC管道中的授权过滤器之前运行,并允许您为所有控制器指定每个操作,每个控制器或全局的身份验证逻辑.身份验证筛选器处理请求中的凭据并提供相应的主体.身份验证过滤器还可以添加身份验证质询以响应未经授

有人可以提供这方面的实际用途吗?我可以在哪里使用这个AuthenticationFilters?

之前我使用自己CustomAttribute: FilterAttribute, IAuthorizationFilter和实现来管理动作/控制器的访问控制列表public void OnAuthorization(AuthorizationContext filterContext).可以在这里使用此AuthenticationFilter吗?

Wik*_*hla 18

正如文档所述,自定义身份验证筛选器提供每个操作,每个控制器或全局的身份验证.

一个示例用途是仅更改几个选定控制器的身份验证.例如,假设您的整个站点使用表单身份验证,其中主体来自表单cookie.

但是,您有一个选定的控制器充当OAuth2资源服务器,其中请求来自服务提供商(服务器),并且没有表单cookie,而是由服务提供商服务器提供OAuth2访问令牌.

这是自定义身份验证过滤器发挥作用的地方 - 它的任务是仅在当前请求的生命周期内将令牌转换为主体,仅用于充当资源服务器端点的唯一控制器.您不希望整个站点接受OAuth2令牌,而是一个特定的控制器.

引入身份验证过滤器的原因是将身份验证与授权分开,其中:

  • 身份验证用于为当前请求建立主体
  • 授权是验证当前主体是否被允许执行当前请求

在引入身份验证过滤器之前,这没有明确分开.就个人而言,我过去常常使用授权过滤器,但是按照这个特定的顺序有两个独立的过滤层(首先是身份验证,然后是授权).