У меня есть страница входа в систему, и мне нужно, когда пользователь нажимает кнопку Отмена, чтобы перенаправить его на доступ к запрещенной странице в клиентском приложении.
Внутреннее действие входа в систему:
if (button != "login")
{
// the user clicked the "cancel" button
var context = await interaction.GetAuthorizationContextAsync(model.ReturnUrl);
if (context != null)
{
// if the user cancels, send a result back into IdentityServer as if they
// denied the consent (even if this client does not require consent).
// this will send back an access denied OIDC error response to the client.
await interaction.GrantConsentAsync(context, ConsentResponse.Denied);
// we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null
return Redirect(model.ReturnUrl);
}
}
ина стороне клиента (MVC) я настроил следующее событие:
options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
// here it's returned as 200 ok in case I denied
// consent should'nt be 401 access denined??
var statusCode=context.Response.StatusCode;
context.Response.Redirect("/");
context.HandleResponse();
return Task.FromResult(0);
}
};
Но мой вопрос: как мне узнать, что IdentityServer4 не удалось, потому что пользователь нажал кнопку Отмена (access_denied) или еслиесть другая проблема, вызвавшая этот сбой?