我已将 MembershipReboot 与 Breeze SPA 应用程序集成,并且登录和授权按预期工作。在 BreezeController.cs 中,我添加了以下代码来捕获授权失败。
[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeAttribute : System.Web.Http.Filters.AuthorizationFilterAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
////check authentication and return if not authorized
if (actionContext != null)
{
if (!actionContext.RequestContext.Principal.Identity.IsAuthenticated)
{
actionContext.Response = actionContext.ControllerContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect);
System.Web.HttpContext.Current.Server.ClearError();
System.Web.HttpContext.Current.Response.Redirect("/UserAccount/Home",true);
//***********
//REDIRECT BEING CAUGHT BY ANGULAR ERROR HANDLER!!!
//**********
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
}
}
调用以下代码时会发现缺少授权:
[System.Web.Http.HttpGet]
[ValidateAntiForgeryToken]
[Authorize]
public string Metadata()
{
return _repository.Metadata;
}
但是,重定向代码正在加载到 Toast 错误处理程序中并显示为错误,并且重定向不起作用。
有什么想法可以让代码运行而不是加载到错误屏幕中吗?