无论调用其他方法如何加载的方法

时间:2012-11-27 22:46:23

标签: c# asp.net-mvc-3

例如,我有以下控制器 example.com/controller/

有三种方法:

  • example.com/controller/method1
  • example.com/controller/method2
  • example.com/controller/validate

我希望验证运行,无论调用什么方法,我想确保验证运行,因为它包含验证客户端是否具有有效cookie集或从页面启动它们的代码。

4 个答案:

答案 0 :(得分:4)

我认为您需要ActionFilter来进行验证。创建自定义验证过滤器属性,覆盖其OnActionExecuting方法(执行cookie验证),并将属性应用于控制器(或特定操作)。

答案 1 :(得分:3)

我建议查看动作过滤器:

  

操作过滤器是可以应用于控制器操作(或整个控制器)的属性,用于修改操作的执行方式。 ASP.NET MVC框架包括几个动作过滤器:

     
      
  • OutputCache - 此操作过滤器将控制器操作的输出缓存指定的时间。
  •   
  • HandleError - 此操作过滤器处理执行控制器操作时引发的错误。
  •   
  • 授权 - 此操作过滤器允许您限制对特定用户或角色的访问。
  •   
     

您还可以创建自己的自定义操作过滤器。例如,您可能希望创建自定义操作筛选器以实现自定义身份验证系统。或者,您可能希望创建一个操作过滤器,用于修改控制器操作返回的视图数据。

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

答案 2 :(得分:1)

根据 的时间要进行此检查,您可以将其放在控制器的构造函数中,或者从基本控制器(通常是AsyncController)覆盖OnActionExecuting。

如果要在每个控制器上运行此检查,那么我建议您创建一个ControllerBase类,然后其他控制器可以继承该类。

答案 3 :(得分:0)

您应该将验证代码从操作移动到自定义授权过滤器。与动作过滤器不同,授权过滤器是最初运行的过滤器,因此您应该使用它们进行此类安全检查。

已经有一个内置的授权过滤器Authorize可以正常工作,如果你想创建一个自定义的,我建议扩展Authorize属性并覆盖所需的方法。 Authorize属性会进行一些解决方法以避免缓存问题,这就是我推荐它的原因。