如果用户使用 Google 登录,ASP.NET Core Identity 2.0 SignoutAsync 不会注销用户

2024-03-06

我已设置并运行 Asp.net Core Identity 版本 2.0。我发现_signinManager.SignoutAsync用户登录 Google 后不会注销用户。当我返回登录方法时,它仅显示用户已登录,其声明对象仍然完好无损。

代码非常简单,如下所示

[AllowAnonymous]
public ActionResult TestGoogle()
{
    var redirectUrl = Url.Action(nameof(ExternalCallback), "Account", new { ReturnUrl = "" });
    var properties = _signInManager.ConfigureExternalAuthenticationProperties("Google", redirectUrl);
    return Challenge(properties, "Google");
}


public async Task<IActionResult> LogOff()
{
    await _signInManager.SignOutAsync();
    return RedirectToAction(nameof(HomeController.Index), "Home");
}

问题是你的RedirectToAction覆盖到 Identity Server 结束会话 URL 的重定向SignOutAsync issues.

As for SignOutAsync,过时的是Authentication部分——从 ASP.NET Core 2.0 开始,它是直接扩展HttpContext itself.

(对于相同的注销问题给出了相同的解释here https://github.com/aspnet/Security/issues/313#issuecomment-120668602由微软的Haok开发。)

编辑:解决方案是在AuthenticationProperties对象与最终SignOutAsync:

// in some controller/handler, notice the "bare" Task return value
public async Task LogoutAction()
{
    // SomeOtherPage is where we redirect to after signout
    await MyCustomSignOut("/SomeOtherPage");
}

// probably in some utility service
public async Task MyCustomSignOut(string redirectUri)
{
    // inject the HttpContextAccessor to get "context"
    await context.SignOutAsync("Cookies");
    var prop = new AuthenticationProperties()
    {
        RedirectUri = redirectUri
    };
    // after signout this will redirect to your provided target
    await context.SignOutAsync("oidc", prop);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果用户使用 Google 登录,ASP.NET Core Identity 2.0 SignoutAsync 不会注销用户 的相关文章

随机推荐

  • 通过递归得出帕斯卡三角形

    有人可以告诉我我当前的代码是否可行吗 我必须使用输入创建帕斯卡三角形 而不使用任何循环 我注定要递归 我花了三天时间来做这个 这是我能想到的最好的输出 def pascal curlvl newlvl tri if curlvl newlv
  • R 中向量的子集()

    我根据以下函数编写了subset 我觉得很方便 ss lt function x subset r lt eval substitute subset data frame x parent frame if is logical r st
  • 将 JSON 解析为 MONGODB 文档

    我是新来的JAVA and MONGODB并且一直在学习尝试并了解这些技术是否能够满足我对产品的要求 我目前陷入无法插入文档 记录 的地步JAVA进入我的MONGODB收藏 我正在使用新的MONGODB version 3 0 到目前为止的
  • 如何在heroku 上托管我的discord.py 机器人?

    我目前正在尝试将我的 Discord 机器人连接到 Heroku 并 24 7 托管它 但我遇到了问题 我将我的机器人上传到 githubhttps github com zemocode flankebot tree master htt
  • 如何更改 .net Web 应用程序中的默认区域性设置?

    我们的 Web 应用程序 net C 使用 amount ToString c 格式化货币金额 显示为几个不同区域的本地化 我们的法裔加拿大用户更喜欢所有金额均采用美国格式 123 456 99 而 fr CA 的默认 Windows 格式
  • Android中如何将日志写入SD卡? [复制]

    这个问题在这里已经有答案了 我的程序在设备中崩溃 我想在我的设备中运行时准确捕获程序的日志 即我想将日志写入我的 SD 卡 直到崩溃为止 我怎样才能实现这个目标 尝试这个 Thread setDefaultUncaughtException
  • 从模块关闭用户窗体

    我正在尝试从模块关闭用户表单 但它不起作用 这是我尝试过的 Sub UpdateSheetButton Dim subStr1 As String Dim subSrrt2 As String Dim tmp As Integer Dim
  • Android Flash 切换按钮崩溃

    应用程序在四种不同的设备上运行良好 但客户端在打开 关闭闪光灯按钮时面临崩溃Xperia z2 主要活动 btnFlash setOnClickListener new OnClickListener Override public voi
  • 需要 Nest REST API 的工作示例而不使用 Firebase API

    我正在努力寻找一个使用普通休息将数据写入 Nest Thermostat API 的工作示例 尝试编写 C 应用程序但无法使用 Firebase 到目前为止发布的多个 Curl 示例不起作用 我有一个有效的 auth token 并且可以毫
  • 为分配/指派问题建立线性规划

    我在线性程序方面遇到了一些麻烦 我已经解决并使用 Excel 但现在我想在 R Python 中执行它 因为我已经达到了 Excel 和求解器的限制 因此 我就这个特定主题寻求帮助 我通过改变 lp assign 函数尝试使用 lPsovl
  • 需要在 web.config 中加密连接字符串和 stmp 信息

    我想在 web config 中保留加密的连接字符串和 stmp 信息 我可以将连接字符串和 SMTP 信息加密存储在 web config 中 并在其中解密和使用吗 OR 我可以加密连接字符串和 SMTP 并保存在 web config
  • Objective-C++ 导入 C++ 类失败,找不到 cassert

    因此 我想公开公开一个 Box2D C 指针 指向我的 cocos2d box2d 项目中的其他 Objective C 类 我在接口中声明了一个方法 getWorld 该方法引用 C 类 b2World 并导入 Box2D h 我的项目中
  • Prisma 部署 Docker 错误“无法连接到服务器”

    这是我已经完成的步骤 prisma init 我在本地 不存在 中为数据库设置了 postgresql 它创建了 3 个文件 datamodel graphql docker compose yml prisma yml docker co
  • 在Databricks(DBFS)中递归列出目录和子目录的文件

    使用python dbutils 如何在Databricks文件系统 DBFS 中递归显示当前目录和子目录的文件 关于 dbutils fs ls 和 fs 魔法命令 的令人惊讶的事情是它似乎不支持任何递归开关 然而 由于 ls 函数返回
  • 如何让VIM在写信时播放打字机声音?

    写了很多之后Windows 上的 Q10 http www baara com q10 我已经习惯了每次按键时发出的打字机声音 至少对我来说 拥有这种声音反馈感觉很棒 另一方面 在 Linux 上 我喜欢用 VIM 编写它 因为它的编辑功能
  • 如何使用 iOS 应用程序中的 X.509 证书数据对 PDF 进行数字签名

    我正在我的应用程序中生成 PDF 我想为通过我的应用程序生成的这些 pdf 提供最好的安全性 我添加了 Apple 提供的默认安全选项 例如所有者密码 允许复制 允许打印等 但我想添加我的证书信息或将其称为使用自定义证书 X 509 证书
  • C ++对`vtable的未定义引用

    我的问题与我发布的另一个问题有所不同 我一开始使用多个文件 并决定暂时将其全部放入一个 main cpp 文件中 以使其正常工作 主要 cpp include
  • Java 中的 Int 到英语单词

    我在这里想问一些奇怪的事情 我想问是否有任何方法 逻辑可以将整数值转换为包含数字英文单词的字符串值 例如 用户输入 22 并得到输出 22 或 2 Thanks 查看this http www rgagnon com javadetails
  • 如何使用 ASP.NET Identity (OWIN) 访问 Facebook 私人信息?

    我正在 ASP NET MVC 5 中开发一个网站 当前使用 RC1 版本 该网站将使用 Facebook 进行用户身份验证和检索初始个人资料数据 对于身份验证系统 我使用新的基于 OWIN 的 ASP NET Identity 引擎 ht
  • 如果用户使用 Google 登录,ASP.NET Core Identity 2.0 SignoutAsync 不会注销用户

    我已设置并运行 Asp net Core Identity 版本 2 0 我发现 signinManager SignoutAsync用户登录 Google 后不会注销用户 当我返回登录方法时 它仅显示用户已登录 其声明对象仍然完好无损 代