【问题标题】:How to access MVC objects from AuthorizeRequest event?如何从 AuthorizeRequest 事件访问 MVC 对象?
【发布时间】:2015-05-01 01:02:53
【问题描述】:

System.Web.Httpaplication.AuthorizeRequest 事件中,哪个对象公开了请求响应的控制器和操作?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果你想改变Authorize属性的行为,你可以继承它。

    但是,如果你想基于 OnAuthorization 事件提供一些其他功能,你可以实现IAuthorizationFilter

    【讨论】:

      【解决方案2】:

      简短的回答:使用内置功能是不可能的,因为当时 AFAIK 还没有 MVC。该事件发生在任何 MVC 处理开始之前。

      但是,您可以进行手动修改以模仿 MVC 生命周期并在最后获得控制器上下文,但这并不太优雅。如果您想尝试该路径,请查看此 SO 答案:https://stackoverflow.com/a/2159134/1323504

      我会建议重新设计您的任务,因为存在请求授权的内置位置,例如全局过滤器属性等。

      【讨论】:

      • 谢谢。执行时我在哪里捕获 [Authorize]?我看到了一个 onAuthorization 方法。
      • 我不认为,但您可以创建自己的自定义 fitler 属性,并将其添加到全局过滤器中。这样,它将在任何执行的操作之前执行,因此您可以在那里进行检查和授权逻辑。此时您拥有 ControllerContext 实例。请谷歌 MVC 全局过滤器,有很多相关的文章和帖子。
      • 例如看看这篇文章,我认为你需要一个动作过滤器。这篇文章是针对 MVC 4 的,但是这个主题与 MVC3 相比没有显着的变化。 asp.net/mvc/overview/older-versions/hands-on-labs/…
      • 知道了。谢谢一百万。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多