jQuery技术:如何在ajax请求返回FormsAuthentication.RedirectToLoginPage时重新加载页面?

在asp.net mvc中使用表单身份validation时,我发现如何将ajax请求重定向到登录页面有点麻烦。

在OnAuthorize方法中,我知道请求需要授权。 如果由于超时等原因删除了cookie,我想将用户重定向到登录页面。 但通常请求是由jquery通过ajax请求触发的。 所以请求返回登录页面的html。

那么如何将用户重定向到ajax请求的登录页面? 有任何想法吗?

    您可以编写一个自定义authorize属性来测试请求是否是一个AJAX请求,如果是,则返回一个包含要重定向到的url的JSON:

    public class MyAuthorizeAttribute : AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { // It was an AJAX request => no need to redirect // to the login url, just return a JSON object // pointing to this url so that the redirect is done // on the client filterContext.Result = new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { redirectTo = FormsAuthentication.LoginUrl } }; } else { // standard request => redirect base.HandleUnauthorizedRequest(filterContext); } } } 

    然后当你发出一个AJAX请求时:

     $.get('/foo', function(result) { if (result.redirectTo) { window.location.href = result.redirectTo; } else { // standard stuff } }); 

    当然为了避免在每次AJAX调用中重复这一点,你可以使用.ajaxComplete()处理程序。

      以上就是jQuery教程分享如何在ajax请求返回FormsAuthentication.RedirectToLoginPage时重新加载页面?相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/558383.html

      (0)
      上一篇 2021年1月26日
      下一篇 2021年1月26日

      精彩推荐