如果会话过期,我正在使用以下代码重定向到登录页面:
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session.Count == 0 || HttpContext.Current.Session["UserRole"] == null)
{
filterContext.Controller.TempData["Error"] = "Your Session have expired. Please relogin again.";
if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
{
//filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index_Partial", controller = "Home" }));
filterContext.Result = new JsonResult
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new
{
error = true,
message = "Your Session have expired. Please relogin again."
}
};
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 501;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
}
else
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index", controller = "Home" }));
}
}
使用上面的代码一切正常。
问题 :
用户打开站点我显示欢迎消息,然后如果用户单击站点树视图中的任何项目,因为所有项目仅适用于经过身份验证的用户,则消息应为“请登录”,因为用户之前没有任何活动会话但是通过检查上面代码中的会话,我只能显示一条消息。
“您的会话已过期。请重新登录。”
如果仍然不清楚,请告诉我。
提前致谢。