2
我试图处理一个场景,当我通过身份验证的OpenID Connect服务器返回一组特定的querystrings。当条件匹配时,我希望将用户重定向到“访问被拒绝”页面。无论出于何种原因,包含重定向的下面的注释行实际上都不会触发。有没有更好的/不同的方式来做我以后的事情?在.NET核心OpenID Connect中间件中重定向?
这里的ID连接中间件是如何在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);
}
}
}
UPDATE:得到它具有以下调整工作:
options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
context.HandleResponse();
context.Response.Redirect("AccessDenied?error=" + context.Failure.Message);
return Task.FromResult(0);
},
// ...
};
您是否尝试过不调用'context.HandleResponse();'? – Brad
删除context.HandleResponse()不起作用,并且在用户转到回调路径uri之前用户仍然没有最终重定向。 – ianpoley