【问题标题】:OnActionExecuting Causing Infinite Redirect for handling Session TimeoutOnActionExecuting 导致处理会话超时的无限重定向
【发布时间】:2013-02-21 10:50:08
【问题描述】:

如果用户会话超时,我正在尝试使用 BaseController 中的 OnActionExecuting 来处理重定向到登录屏幕。但是,即使在我登录之前,它也会导致无限重定向 - 任何人都可以建议如何解决这个问题吗?

所以在我的基本控制器中,我有以下内容:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (SessionManager.Instance().GetUser() == null) 
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                    { "Controller", "Home" },
                    { "Action", "LogOn" }
            });
        }

        base.OnActionExecuting(filterContext);
    }

所以基本上我有一个可以获取/设置用户等的 Session Manager 类 - 我知道问题在于 GetUser 也将为 null,因为它仅在验证 LogOn 后使用我的 SetUser 方法设置。

但不是让我的其他控制器中的每个方法都进行如下检查:

public ActionResult SomeOtherMethod()
{
     if(SessionManager.Instance().GetUser() != null)
     {

             //Go Do Useful View stuff

     }
     else
     {
          //Redirect To Logon
     }

}

我想在基本控制器中使用 OnActionExcuting。但是因为它在 LogOn 页面上运行(因为它应该)我得到无限重定向,因为 GetUser 将始终为空?

有更好的办法吗

【问题讨论】:

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


    【解决方案1】:

    也许你可以试试这样的:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string controllerName = filterContext.Controller.GetType().Name;
        string actionName = filterContext.ActionDescriptor.ActionName;
    
        if (SessionManager.Instance().GetUser() == null ) 
        {
            if(!controllerName.Equals(typeof(HomeController).Name,StringComparison.InvariantCultureIgnoreCase)
            || !actionName .Equals("LogOn",StringComparison.InvariantCultureIgnoreCase)))
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                    { "Controller", "Home" },
                    { "Action", "LogOn" }
            });
        }
    
        base.OnActionExecuting(filterContext);
    }
    

    【讨论】:

    • 好的 - 我会试试看效果如何。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2013-05-27
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多