私は、特定のクエリーストリングのセットを返すように認証しているOpenID Connectサーバーがある場合のシナリオを処理しようとしています。条件が一致すると、基本的にユーザーを「アクセスが拒否されました」ページにリダイレクトする必要があります。どんな理由であれ、リダイレクトを含むコメント行は実際には決して発動しません。後にしていることを行うためのより良い/異なる方法がありますか?ここで.NETのリダイレクトOpenID Connectミドルウェア?
はOpenIDの接続ミドルウェアは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