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