IAuthenticationFilter.OnAuthenticationChallenge()的目的是什么

时间:2014-03-06 11:44:43

标签: .net asp.net-mvc authentication asp.net-mvc-5

我在RegisterGlobalFilters()中注册了自定义IAuthenticationFilter实施。在我的项目中,我正在目睹以下呼叫序列:

  1. IAuthenticationFilter.OnAuthentication
  2. 授权(如果有)
  3. 控制器操作
  4. IAuthenticationFilter.OnAuthenticationChallenge
  5. 为什么在控制器操作后发生?从this blog post开始,我读了

      

    要记住的关键是OnAuthenticationChallenge没有   必须在每个其他Action Filter之前运行。它可以运行   各个阶段。

    如果我们无法判断它究竟何时被调用,它怎么有用?

1 个答案:

答案 0 :(得分:8)

Source

“只要请求失败了操作方法的身份验证或授权策略,MVC框架就会调用OnAuthenticationChallange方法。OnAuthenticationChallenge方法传递一个AuthenticationChallengeContext对象,该对象派生自ControllerContext类“

所以,一个实际的例子是:

1 - 您设置了自定义授权过滤器

2 - 用户授权方法失败

3 - OnAuthenticationChallenge方法被调用。