检查所有控制器的会话?

时间:2013-10-10 10:35:31

标签: asp.net-mvc

用户登录后,将设置会话。我想检查所有控制器中的用户会话(不是全部,而是需要登录用户的控制器)。在webforms中,我们可以在page_load中或使用基类来完成。 asp mvc中推荐的方法是什么? (我看到使用基本控制器是个坏主意)

2 个答案:

答案 0 :(得分:1)

您可以使用base controller继承创建一个控制器(在此检查会话),并将此控制器引用到您需要的控制器中。

BaseController:

 public class BaseController : Controller
    {
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //check Session here
        }
    }

DerivedController:

 public class ABCController : BaseController
    {
       //Your code
    }

答案 1 :(得分:1)

有两种方法可以做到这一点。

您可以创建一个继承自AuthorizeAttribute的自定义授权属性,并在一个位置执行所有会话和授权代码,或者

您可以创建自己的操作过滤器,执行必要的会话检查并将这两个属性附加到操作/控制器。

这取决于您是否要求这些功能中的一个或另一个独立运行,如果是这样,请选择后一个建议。