5

我正在使用向第三方服務發出API請求的身份驗證中間件。然後,該中間件將設置隨後由AuthorizationHandler與IAuthorizationRequirement和自定義策略一起處理的聲明。從AuthorizationHandler(ASP.NET Core)自定義重定向

中間件件工作,我能夠建立索賠:

context.User.AddIdentity(identity); // contains claims 

如果我堅持是重定向到一個特定的URL(有對我們需要重定向自定義規則)從處理程序或屬性。從我試過的處理程序:

var mvcContext = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext; 
mvcContext.Result = new RedirectToActionResult("login", "home", null); 

但它被忽略;只有401返回。 AuthorizeAttribute不再擁有OnAuthorization,所以我不能使用那個...

想法? 謝謝。

回答

0

如果你想在你的API的中間件嘗試的唯一一件事就是進行登錄行爲,爲你的代碼似乎可以解釋,這些可能的情況是,在我看來,發人深省:

  1. 如果/login/home重定向到一個網頁:

    • 您應該使用HttpContext.Response.Redirect重定向到登錄網頁。 As the documentation says,這將發送301代碼,任何網頁瀏覽器可以解釋。 HttpContext可用於Invoke方法。
  2. 如果/login/home重定向到執行,用於驗證用戶身份的邏輯控制器:

也看看Nate's postthis question