Asp.net-Mvc

Asp.net Mvc 自定義機制來處理未經授權的請求

  • August 9, 2011

對於我的網站,我希望遵循安全控制器(或操作)的行為

如果使用者發出正常請求重定向到登錄頁面(我很容易做到)

如果請求是 Ajax 類型 Request.IsAjaxRequest()==true,返回狀態碼 401

我該如何為此創建過濾器?

public class MyCustomAuthorize : AuthorizeAttribute
{
       protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
       {
           //if ajax request set status code and end Response
           if (filterContext.HttpContext.Request.IsAjaxRequest())
           {
               filterContext.HttpContext.Response.StatusCode = 401;
               filterContext.HttpContext.Response.End();
           }

           base.HandleUnauthorizedRequest(filterContext);
       }
}

創建一個像上面這樣的過濾器,如果請求是通過 ajax 發出的,它將為未經授權的請求返回狀態程式碼 401。

如果您使用的是 jQuery,您可以執行以下操作

jQuery.ajax({
statusCode: {
   401: function() {
     alert('unauthrized');
   },

 /*other options*/
});

引用自:https://stackoverflow.com/questions/6991749