如果会话过期,我使用以下代码重定向到登录页面:
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" }));
}
}
使用上面的代码一切正常。
问题:
用户打开我正在显示欢迎消息的网站,然后如果用户点击网站树视图中的任何项目,因为所有项目仅对经过身份验证的用户可用,则消息应为“”请登录“”,因为用户没有任何之前的活动会话,但通过检查会话,如上面的代码,我只能显示单个消息。
“您的会话已过期。请再次重新登录。”
如果情况不明确,请告诉我。
提前致谢。
答案 0 :(得分:0)
您应该使用cookie来保存用户日志信息,使用Session来检查当前用户是否应该再次登录。如果cookie为null或为空,则显示“请登录”。