我正在开发Asp.Net MVC 5 jQuery Mobile应用程序。我面临着一个奇怪的错误。当会话过期并且用户单击任何链接时。一个新的白色页面带有文本"未定义"。如何将用户重定向到登录页面。
我试过了,但没有成功。
如果您在Action上添加了[Authorize]Attribution,它应该直接转到您的登录页面,否则请检查客户端上呈现的html链接。再见
您可以为这个场景创建一个操作过滤器。
public class SessionExpiredRedirect : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller.ControllerContext.HttpContext.Session == null) // Or however you want to check for expired session.
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "Controller", "YourController" },
{ "Action", "YourAction" }
});
}
}
}
要使用过滤器,您可以将属性专门放置在会话过期时要重定向的操作方法上:
public class HomeController : Controller
{
[SessionExpiredRedirect]
public ActionResult Index()
{
}
}
或者在FilterConfig.cs文件中:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new SessionExpiredRedirect());
}
}
在这种情况下,将为所有操作方法执行该属性。