gpt4 book ai didi

asp.net-core - 在 .NET Core OpenID Connect 中间件中重定向?

转载 作者:行者123 更新时间:2023-12-04 05:19:42 27 4
gpt4 key购买 nike

当我正在验证的 OpenID Connect 服务器返回一组特定的查询字符串时,我正在尝试处理一个场景。当条件匹配时,我想基本上将用户重定向到“拒绝访问”页面。无论出于何种原因,下面包含重定向的注释行从未真正触发。有没有更好/不同的方式来做我所追求的?

以下是 OpenID Connect 中间件在 中的配置方式Startup.cs :

services.Configure<OpenIdConnectOptions>(options => 
{

// ...

options.Events = new OpenIdConnectEvents
{
OnMessageReceived = context =>
{
if (context.HttpContext.Request.Query.ContainsKey("error"))
{
context.HandleResponse(); // <-- Fires
context.Response.Redirect("/AccessDenied"); // <-- Redirect fires but user is not redirected
}

return Task.FromResult(0);
}
}
}

更新:通过以下调整使其工作:
options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
context.HandleResponse();
context.Response.Redirect("AccessDenied?error=" + context.Failure.Message);

return Task.FromResult(0);
},
// ...
};

最佳答案

你不应该在重定向之前调用 HandleResponse() ,因为在这种情况下你“告诉”停止处理 HTTP 管道中的请求。改成这样:

        if (context.HttpContext.Request.Query.ContainsKey("error"))
{
context.Response.Redirect("/AccessDenied");
context.HandleResponse();
}

关于asp.net-core - 在 .NET Core OpenID Connect 中间件中重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com