如何检查控制器的每个动作的会话?

时间:2018-11-21 09:51:31

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

我有一个名为AllEntities的控制器,它有多个动作,例如GetEntityByTypeIdGetLastEntity

我想在使用AllEntities控制器时进行会话检查

就像假设我请求一个URL http://localhost:59656/AllEntities/GetLastEntity
然后应该检查是否分配了天气会话

将这种情况的一种方式设为条件if (Session["userName"] == null)
在此控制器的每个动作中
如何为整个AllEntities控制器

检查一次

将提供任何帮助

1 个答案:

答案 0 :(得分:0)

您可以覆盖将在每次操作时触发的控制器Initialize方法。我用它来填充多个视图/全部视图中所需的ViewBag元素。

public class YourController : Controller
{

    protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);

        try
        {
            //do your session check here...

            //alternatively, if you wanted to limit to certain actions in your controller you could say: 
            var actionName = requestContext.RouteData.Values["action"].ToString().ToLower();
            if(actionName == "actionName" || actionName == "actionName2") {
               //do your limited session work...
            }
        }
        catch (Exception e) { }

    }
    ...