完成所有登录过程后如何获取ExternalIdentity?

2024-01-10

我正在使用 MVC 5,我可以使用 Google 成功登录。

我想在登录过程后访问用户的外部身份声明。例如,我想在视图中访问用户的声明“图片”。但是,如果我尝试运行此代码,它总是返回 null。 (登录过程中除外 - 自动生成 mvc 模板代码)

有没有办法让我访问external身份主张? (登录过程之后)


我发现了身份是如何创建的。基本上是ExternalSignInAsync拨打内部电话SignInAsync这会调用CreateUserIdentityAsync.

我找到了一个班级ApplicationSignInManager in the IdentityConfig文件,然后我改变了CreateUserIdentityAsync方法:

public override async Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user)
{
    var externalIdentity = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);

    var localIdentity = await user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager);

    foreach (var item in externalIdentity.Claims)
    {
        if (!localIdentity.HasClaim(o => o.Type == item.Type))
            localIdentity.AddClaim(item);
    }

    return localIdentity;
}

因此,每次登录时,我都会在登录用户中获得我的声明+外部声明。从一个角度我可以调用:

@HttpContext.Current.GetOwinContext()
    .Authentication.User.FindFirst("urn:google:picture").Value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完成所有登录过程后如何获取ExternalIdentity? 的相关文章

  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装

随机推荐

  • 禁用 Android 中的主页按钮

    我在我的活动中添加此代码 public boolean onKeyDown int keyCode KeyEvent event if keyCode KeyEvent KEYCODE HOME return false return su
  • 使用 Struts 2 中的拦截器进行身份验证后登录重定向

    我有一个登录页面 登录请求可以来自多个操作类 一旦用户经过验证 我必须将其重定向到上一个操作类 登录请求来自该操作类 我正在使用拦截器来执行此操作 但我错过了一些东西 它无法正确重定向 这是我的代码 public class SetTarg
  • Windows Phone:按下后退按钮时,IE 或 Edge 中缺少模糊事件

    以下场景与 Windows Phone 设备 IE 或 Edge 相关 场景一 如果输入元素具有焦点并且软键盘处于打开状态 则按硬件后退键会模糊焦点元素并按应有的方式弹出键盘 但是 没有触发相应的模糊事件 场景2 如果输入元素具有焦点并且软
  • libpcap 用于捕获 10 Gbps NIC

    我想从10Gbps网卡上抓包 0丢包 我正在将 lipcap 用于 100Mbps NIC 并且工作正常 libpcap 能够处理 10Gbps NIC 流量吗 如果不是 还有什么其他替代方法可以实现这一目标 libpcap 是否能够以 0
  • 如何找到进程的入口点(或基地址) - 处理 ASLR

    由于ASLR 地址空间布局随机化 自Windows Vista起 exe的基地址是随机的 因此无法在PE文件中找到它 在 Visual C 中 DYNAMICBASE 选项默认启用 因此基地址 exe 的运行是随机的 每次加载程序加载它时
  • Socket.SendAsync 需要几秒钟才能完成

    我正在尝试优化 TCP 套接字包装器 该包装器正在处理大量入站连接 我正在一个基本的聊天服务器和一个小型客户端应用程序中测试它 以将客户端发送到它 这两个应用程序都位于通过千兆位交换机连接的单独 W2k3 服务器上 通过反复试验 我将测试改
  • 如何比较postgres中的两个表

    我想比较来自两个不同查询的两个列值 谁能建议一个比较 Postgres 中两列的查询 嗯 最容易理解的 但不一定是最快的 可能是这样的 但你所说的 比较 可能还有其他意思 Values in column1 that aren t in c
  • 子进程调用 ls 时出错

    知道错误想说什么吗 Traceback most recent call last File
  • Jquery - 是否可以重命名 js 函数?

    希望可以有人帮帮我 我有一个类似的功能 是否可以将此函数重命名 或克隆 为my test 2 提前致谢 Peter 功能有一流的物体 http en wikipedia org wiki First class object在 JavaSc
  • 如何更改 Vuetify v-autocomplete 菜单边框半径样式?

    我想改变盒子的样式v autocomplete下拉列表并给出border radius样式到下拉列表 如下图所示 到目前为止我设计的内容如下图所示 到目前为止 我已经将 menu props 属性直接赋予v autocomplete tag
  • 在Powershell中,有没有办法将html转换为具有深度的对象?

    我正在使用 Powershell 来试验网络抓取 想知道是否有更简单的方法来处理元素 有没有办法将 Html 页面转换为 powershell 中具有适当深度的对象 类似于 Convert ToJson Depth 的东西吗 例如 要得到某
  • Eclipse 条件断点,在任何字符串等于处断点

    我有一个大型 遗留 应用程序 我必须对其进行修复 其代码结构很糟糕 代码味道太多 让我窒息 我真的无法弄清楚 gui 中的字符串填充在哪里 因此 如果我能以某种方式在任何字符串 我不知道变量的名称或它在哪里 等于 foobar 时有一个表达
  • 如何使用 Python 自动杀死占用过多内存的进程?

    情况 我有一个网站 允许人们执行任意代码用另一种语言 具体来说 是我创建的 esolang 在共享托管服务器上使用 Python 解释器 我在一个单独的进程中运行此代码 该进程的时间限制为 60 秒 问题 你可以做类似的事情 Python等
  • msbuild 从属性组创建项目组

    我想传递一个以分号分隔的字符串列表 每个字符串代表一个文件名
  • 为什么我永远不应该使用不安全的块来修改字符串?

    我有一个字符串 我想以某种方式修改它 例如 反转或大写 我发现最快的方法是使用不安全的块和指针 例如 unsafe fixed char str text str X 有什么理由让我永远不应该这样做吗 Net 框架要求字符串是不可变的 由于
  • 自定义 Seaborn histplot 子图中的图例

    我正在尝试生成一个包含 4 个子图的图形 每个子图都是 Seaborn 直方图 图形定义线为 fig axes plt subplots 2 2 figsize 6 3 7 sharex True sharey True ax1 ax2 a
  • 训练 Tesseract 特定单词 - 可能吗?

    我想使用 Tesseract 从文档中提取大约 10 20 个关键字 该文档将包含所有英文字符 单词 我感兴趣的是 年龄 23 之类的东西 这里 Age 是我感兴趣的关键字 也想提取 23 它的值 我想到的第一个方法是将整个页面提取为文本
  • 多边形轮廓上的边并不总是正确的

    我使用下面的算法来生成四边形 然后将其渲染以形成如下所示的轮廓 http img810 imageshack us img810 8530 uhohz png http img810 imageshack us img810 8530 uh
  • Python 从并行目录导入模块

    我将如何组织我的 python 导入 以便我可以拥有这样的目录 project init py src init py classes py test init py tests py 然后在 project test tests py 中
  • 完成所有登录过程后如何获取ExternalIdentity?

    我正在使用 MVC 5 我可以使用 Google 成功登录 我想在登录过程后访问用户的外部身份声明 例如 我想在视图中访问用户的声明 图片 但是 如果我尝试运行此代码 它总是返回 null 登录过程中除外 自动生成 mvc 模板代码 有没有