0

я вывел из класса AuthorizeAttribute и сделал свой собственный CustomAuthorizeПользовательские [Авторизоваться] фильтр для Ajax Jquery просит

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     if (filterContext.HttpContext.Request.IsAjaxRequest()) 
     { 
      filterContext.HttpContext.Response.StatusCode = 401; 
      filterContext.Result = new JsonResult 
      { 

       Data = new DataSourceResult { Errors = new { error = "NotAuthorized" } } 
       ,JsonRequestBehavior = JsonRequestBehavior.AllowGet 
      }; 
     } 
     else 
     { 
      // this is a standard request, let parent filter to handle it 
      base.HandleUnauthorizedRequest(filterContext); 
     } 
    } 

Есть так много мест, где я использую Ajax Jquery вызов и он не выглядит практичным, чтобы проверить ответ на каждый из тех, а затем сделать

window.location.href='/Auth/login'; 

Я просто интересно, можем ли мы перенаправить на страницу входа в систему из метода HandleUnauthorizedRequest?

ответ

0

Создайте базовый контроллер, на котором вы разместите свой собственный атрибут авторизации. Что-то вроде:

[YourAuthorizeAttribute] 
public class BaseAuthorizeController : BaseController 
{ 
    public BaseAuthorizeController() {} 
} 

выше будет применяться для всех ваших действий, а не только АЯКС действия. Вы можете расширить атрибут, передав ему логическое значение false для действий, которые не нуждаются в новой логике;

public class ClaimsAuthorizeAttribute : ActionFilterAttribute 
{ 
    private readonly bool authorize = true;public YourAuthorizeAttribute(bool authorize = true) 
    { 
     this.authorize = authorize; 
    } 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!authorize) 
     { 
      return; 
     } 

     // Your custom authentication logic 
    } 
+0

Нельзя добавить базовый контроллер сейчас, поскольку для этого потребуется массивный рефакторинг. Есть ли другое решение? Не может ли это быть перенаправлено из метода HandleUnauthorizedRequest? – InTheWorldOfCodingApplications