Tag: authorize attribute

在Ajax调用中处理会话超时

我正在做一个Ajax调用使用jQuery的一个asp.net mvc控制器行动: [AcceptVerbs(HttpVerbs.Post)] public ActionResult GetWeek(string startDay) { var daysOfWeek = CompanyUtility.GetWeek(User.Company.Id, startDay); return Json(daysOfWeek); } 会话超时时,由于用户对象存储在会话中,所以此调用将失败。 我创build了一个自定义的授权属性,以检查会话是否丢失,并redirect到login页面。 这适用于页面请求,但是它不适用于Ajax请求,因为您不能从ajax请求redirect: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class AuthorizeUserAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { if (!httpContext.Request.IsAjaxRequest()) {//validate http request. if (!httpContext.Request.IsAuthenticated || httpContext.Session["User"] == null) { FormsAuthentication.SignOut(); httpContext.Response.Redirect("~/?returnurl=" + httpContext.Request.Url.ToString()); return false; } } return […]