You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core中阻止SignOutAsync登出后的自动重定向?

解决登出后自动重定向的问题

要实现登出后不进行任何重定向,需要从调用登出的代码和OIDC事件配置两方面修改:

1. 修改OIDC事件处理逻辑

在你的AddOpenIdConnect配置中,替换OnSignedOutCallbackRedirect事件的处理逻辑,直接返回成功响应而非执行重定向:

options.Events.OnSignedOutCallbackRedirect += context =>
{
    // 设置响应状态码为200,告知客户端登出成功
    context.Response.StatusCode = StatusCodes.Status200OK;
    context.Response.ContentType = "application/json";
    // 可根据业务需求返回自定义响应内容,比如JSON格式
    return context.Response.WriteAsJsonAsync(new 
    { 
        Success = true, 
        Message = "登出成功" 
    });
};

2. 调整登出调用代码

调用SignOutAsync时,需要同时处理OIDC和Cookie认证方案,并通过AuthenticationProperties明确禁用默认重定向行为:

var authProperties = new AuthenticationProperties
{
    // 清空重定向地址,避免触发默认跳转逻辑
    RedirectUri = string.Empty
};

// 先触发OIDC登出流程(通知身份认证服务端销毁会话)
await _httpContextAccessor.HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, authProperties);
// 再清除本地Cookie会话,确保客户端认证状态完全清除
await _httpContextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);

逻辑说明

  • 原配置中OnSignedOutCallbackRedirect事件默认会执行重定向操作,修改后直接返回响应终止流程。
  • 同时登出Cookie和OIDC方案,确保本地会话与身份认证服务端的会话都被销毁,避免残留认证状态。

内容的提问来源于stack exchange,提问作者Rajdip Busa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:57:21