会话在mvc4中到期后无法返回登录页面

时间:2016-08-18 05:15:51

标签: c# asp.net-mvc-4 session action-filter

我已创建过滤器以检查会话,如果过期,我将重定向到登录页面。这是我的下面的代码。

 public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
            HttpContext ctx = HttpContext.Current;
           if(HttpContext.Current.User.Identity.Name=="")
            {
                FormsAuthentication.SignOut();
                filterContext.Result = new RedirectResult("~/Login/Index");
                return;
            }
            base.OnActionExecuting(filterContext);
        }

我装饰了我的动作方法如下。

 [SessionTimeOut]
  public PartialViewResult GetGridData(string client_id, string emp_id, string empciti_id, string Message)

工作正常。会话到期后,它将呈现登录页面。但我面临的问题是我的布局页面仍然出现在顶部。在中心,我的登录页面显示。My login page appears in center. I have attached image. 所以我该如何解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:0)

  

我已创建过滤器以检查会话,如果过期,我将重定向到登录页面。这是我的下面的代码。

你做得不好。这不是好的做法。

您已经有一个名为AuthorizeAttribute的过滤器属性。我建议使用它。此外,请查看link,其中讨论了 ASP.Net Identity 在您的应用程序中实现授权/身份验证的简便方法。

答案 1 :(得分:-1)

在〜/ Views / Login / Index.cshtml中设置 -

Layout = null;