gpt4 book ai didi

ajax - 如果 session 超时,如何在MVC中的jquery ajax调用后重定向到新页面?

转载 作者:行者123 更新时间:2023-12-04 10:57:32 26 4
gpt4 key购买 nike

1- 我有一个调用 Action 的 Ajax 链接,该 Action 返回一个 View ,该 View 在特定 Div 中打开(将其视为使用相应 View 更新 div 的菜单)
2-如果 session 超时返回我的登录 View

因此,如果我单击链接并且 session 超时,则登录 View 将在 div 中打开,而不是在整个页面中

如果 session 超时它在我的 div 的新页面中返回登录 View ,我应该怎么做?

最佳答案

处理 session 过期的有效方法是创建自定义授权属性并返回 HTTP 403 如果 session 已过期并且正在处理 ajax 请求,则响应。

要创建 Ajax 感知授权属性,您可以从 继承。授权属性 并覆盖 处理未授权请求 检查请求类型的事件,例如。 IsAjaxRequest()

public class AjaxAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
// Fire back an unauthorized response
filterContext.HttpContext.Response.StatusCode = 403;
}
else
base.HandleUnauthorizedRequest(filterContext);
}
}

然后就像通常使用 Authorize 一样使用 AjaxAuthorize 属性装饰您的 Controller 或操作
[AjaxAuthorize(Roles = "1,2,3,4,5")]
public class HomeController
{

然后,如果您使用 jQuery,则可以通过创建全局 ajax 错误处理程序来处理 403 响应。
    $.ajaxSetup({
error: function (x, e) {
if (x.status == 403) {
alert("Sorry, your session has expired. Please login again to continue");
window.location = "/login";
}
}
});

关于ajax - 如果 session 超时,如何在MVC中的jquery ajax调用后重定向到新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com