C# AJAX调用后会话过期时如何将用户重定向到登录页面
我有以下代码,在大多数情况下运行良好 但当会话过期并且用户执行一些AJAX调用时,它无法正常工作,因此返回AJAX错误。 如何以正确的方式进行管理 谢谢C# AJAX调用后会话过期时如何将用户重定向到登录页面,c#,ajax,asp.net-mvc,session,session-state,C#,Ajax,Asp.net Mvc,Session,Session State,我有以下代码,在大多数情况下运行良好 但当会话过期并且用户执行一些AJAX调用时,它无法正常工作,因此返回AJAX错误。 如何以正确的方式进行管理 谢谢 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public class SessionExpireFilterAttribute : ActionFilterAttri
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public static String LoginUrl { get; set; }
public delegate bool CheckSessionDelegate(HttpSessionStateBase session);
public static CheckSessionDelegate CheckSessionAlive;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
if ((CheckSessionAlive == null) || (CheckSessionAlive(session)))
return;
//send them off to the login page
var url = new UrlHelper(filterContext.RequestContext);
var loginUrl = url.Content(LoginUrl);
session.RemoveAll();
session.Clear();
session.Abandon();
filterContext.HttpContext.Response.StatusCode = 403;
filterContext.HttpContext.Response.Redirect(loginUrl, false);
filterContext.Result = new EmptyResult();
}
}
我目前的解决方案如下,但这是正确的吗
function UpdateSelectedProduct(uid, checked) {
$lastProductUID = uid;
var params = { uid: uid, isSelected: checked };
$.ajax({
type: "POST",
url: '@Url.Action("UpdateSelectedProduct", "Orders")',
data: JSON.stringify(params),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
},
error: function () {
// alert("Timeout error.");
document.location.href = "/"; // <---- Here it is
}
});
}
函数更新选定产品(uid,选中){
$lastProductUID=uid;
var params={uid:uid,isSelected:checked};
$.ajax({
类型:“POST”,
url:'@url.Action(“UpdateSelectedProduct”、“Orders”),
数据:JSON.stringify(params),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
},
错误:函数(){
//警报(“超时错误”);
document.location.href=“/”;//您的解决方案将强制页面重定向到“/”在JS端。您是否尝试将登录url作为响应的一部分发送?这样,您可以从javascript errorhandler中获取它并适当地重定向。您可以检查错误中的状态代码,并在错误出现时重定向unauthorized@Jonesy听起来不错。你能把一些代码示例作为答案吗?请看