Вы можете попробовать следующие решения, если используете Microsoft.AspNetCore.Authentication.AzureAD.UI
и используете аутентификацию, например:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Метод 1:
Создайте контроллер аккаунта и напишите свой собственный знакВыходное действие:
public readonly IOptionsMonitor<AzureADOptions> Options;
public AccountController(IOptionsMonitor<AzureADOptions> options)
{
Options = options;
}
public IActionResult SignOut()
{
var options = Options.Get(AzureADDefaults.AuthenticationScheme);
var callbackUrl = Url.Action(nameof(AfterSignOut), "Account", values: null, protocol: Request.Scheme);
return SignOut(
new AuthenticationProperties { RedirectUri = callbackUrl },
options.CookieSchemeName,
options.OpenIdConnectSchemeName);
}
Метод 2:
Использовать функцию выхода из библиотеки, установить новый URL перенаправления в OnSignedOutCallbackRedirect
событие:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Events.OnSignedOutCallbackRedirect = (context) =>
{
context.Response.Redirect("/Account/AfterSignOut");
context.HandleResponse();
return Task.CompletedTask;
};
});
И на странице, которую вы хотите выполнить, добавьте ссылку:
<a href="~/AzureAD/Account/SignOut">SignOut</a>
Метод 3:
Использовать пользовательский Перезапись URLПромежуточное программное обеспечение для перенаправления путем проверки пути, введите следующие коды перед app.UseMvc
:
app.UseRewriter(
new RewriteOptions().Add(
context => { if (context.HttpContext.Request.Path == "/AzureAD/Account/SignedOut")
{ context.HttpContext.Response.Redirect("/Account/AfterSignOut"); }
})
);
Также со ссылкой: <a href="~/AzureAD/Account/SignOut">SignOut</a>