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 エラー ハンドラに読み込まれ、エラーとして表示され、リダイレクトが機能しません。
エラー画面に読み込まれるのではなく、コードを実行する方法はありますか?