具有IdentityServer的ASP.Net Identity无法在控制器上下文中获取用户

起源

我按照这里的文档进行操作,能够使我的控制器使用[Authorize]标头。我使用带有ASP.NET Identity的IdentityServer作为用户存储。

在我的ConfigureServices我有:

services.AddIdentity<KipUser, IdentityRole>()
     .AddEntityFrameworkStores<KipDbContext>()
     .AddDefaultTokenProviders();

在我的Configure我有:

app.UseIdentityServer();
app.UseAuthorization();

在我的控制器中,我做了一些测试:

[Authorize]
public IEnumerable<MyDTO> GetData(int count = 3) {
     var test = User; // The User.Identity.Name is empty for some reason
     var id = User.FindFirst(ClaimTypes.NameIdentifier).Value; // Successfully gets the Guid
     var test2 = _userManager.GetUserAsync(User); // result is null
     var test3 = _userManager.GetUserId(User); //returns null
     var test4 = _userManager.FindByIdAsync(id); // Successfully gets the User from the DB

似乎存在配置错误,因为UserManager无法从ClaimsPrincipal User变量获取ASP.Net标识我是不是假设太多了.AddEntityFrameworkStores<KipDbContext>()会配置应用程序知道如何_userManager.GetUserAsync(User)需要,而不是我的搜索要求自己对这个_userManager.FindByIdAsync(User.FindFirst(ClaimTypes.NameIdentifier).Value)

起源

我问这个问题的主要原因是因为我看到了很多有关IdentityServer 2和3的信息,这些信息似乎相关。我无法在IdentityServer 4项目中使用这些修复程序,因此我认为这是一个不同的问题。这是同样的问题。正如@Tore指出的那样,这是索赔的问题,但我认为可以通过app.UseIdentityServer();

清楚地描述了该问题:

UseIdentity和UserManager在存储用户ID声明的位置上存在分歧

即使我们正在调用app.UseIdentityServer();它,似乎也需要清除Microsoft提供的一些默认映射。

对于那个问题,JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();为我解决问题Startup.cs Configure之前添加功能app.UseIdentityServer();我现在可以看到的说法是在控制器不变,都_userManager.GetUserAsync(User);_userManager.GetUserId(User);正常工作。

令人惊讶的是,此函数调用未包含在IdentityServerAspNetIdentity示例项目中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有ASP.NET身份的Thinktecture IdentityServer-已通过身份验证的用户

来自分类Dev

ASP.NET(OWIN)身份:如何从Web API控制器获取用户ID?

来自分类Dev

在asp.net Identity 2.0分离的上下文中进行引用

来自分类Dev

asp.net具有控制器的嵌套视图

来自分类Dev

如何在ASP.Net Identity上获取OWIN上下文?

来自分类Dev

ASP.NET Identity的“创建模型时无法使用上下文”异常

来自分类Dev

ASP.Net 用户控件数据绑定错误 - 当前上下文中不存在属性

来自分类Dev

在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?

来自分类Dev

如何在 ASP.NET Core Identity 中控制器的构造函数中获取登录用户名

来自分类Dev

Asp.Net-无法创建类型的常量值。在此上下文中仅支持原始类型或枚举类型

来自分类Dev

ASP.NET 中的用户控件上下文和 http 上下文是否相同?

来自分类Dev

在.NET Core的xunit上下文中获取ContentRootPath或IHostingEnvironment

来自分类Dev

同一上下文中的ASP.NET MVC域模型和身份模型-UserLogin没有密钥

来自分类Dev

在带有Entity Framework的ASP.NET MVC中,在此上下文中仅支持原始类型或枚举类型

来自分类Dev

同一上下文中的ASP.NET MVC域模型和身份模型-UserLogin没有密钥

来自分类Dev

在带有Entity Framework的ASP.NET MVC中,在此上下文中仅支持原始类型或枚举类型

来自分类Dev

ASP.NET MVC在当前上下文中不存在名称“文件”

来自分类Dev

ASP.NET Core-当前上下文中不存在名称“ JsonRequestBehavior”

来自分类Dev

DllImport-在测试上下文中工作,但不在ASP.NET MVC中工作

来自分类Dev

ASP.NET MVC在当前上下文中不存在名称“文件”

来自分类Dev

共享布局视图可以在ASP.NET MVC中具有控制器吗?

来自分类Dev

ASP.NET MVC5:对具有会话的控制器进行单元测试

来自分类Dev

基于路由数据的具有不同模型类型的Asp.net单控制器操作

来自分类Dev

如何在ASP.NET Core中找到具有特殊名称空间的控制器

来自分类Dev

共享布局视图可以在ASP.NET MVC中具有控制器吗?

来自分类Dev

具有ASP.NET Identity的模型的独特属性

来自分类Dev

具有多个应用程序的ASP.NET Identity

来自分类Dev

具有ASP.NET身份的动态访问控制

来自分类Dev

ASP.NET MVC授权具有多个角色的用户

Related 相关文章

  1. 1

    具有ASP.NET身份的Thinktecture IdentityServer-已通过身份验证的用户

  2. 2

    ASP.NET(OWIN)身份:如何从Web API控制器获取用户ID?

  3. 3

    在asp.net Identity 2.0分离的上下文中进行引用

  4. 4

    asp.net具有控制器的嵌套视图

  5. 5

    如何在ASP.Net Identity上获取OWIN上下文?

  6. 6

    ASP.NET Identity的“创建模型时无法使用上下文”异常

  7. 7

    ASP.Net 用户控件数据绑定错误 - 当前上下文中不存在属性

  8. 8

    在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?

  9. 9

    如何在 ASP.NET Core Identity 中控制器的构造函数中获取登录用户名

  10. 10

    Asp.Net-无法创建类型的常量值。在此上下文中仅支持原始类型或枚举类型

  11. 11

    ASP.NET 中的用户控件上下文和 http 上下文是否相同?

  12. 12

    在.NET Core的xunit上下文中获取ContentRootPath或IHostingEnvironment

  13. 13

    同一上下文中的ASP.NET MVC域模型和身份模型-UserLogin没有密钥

  14. 14

    在带有Entity Framework的ASP.NET MVC中,在此上下文中仅支持原始类型或枚举类型

  15. 15

    同一上下文中的ASP.NET MVC域模型和身份模型-UserLogin没有密钥

  16. 16

    在带有Entity Framework的ASP.NET MVC中,在此上下文中仅支持原始类型或枚举类型

  17. 17

    ASP.NET MVC在当前上下文中不存在名称“文件”

  18. 18

    ASP.NET Core-当前上下文中不存在名称“ JsonRequestBehavior”

  19. 19

    DllImport-在测试上下文中工作,但不在ASP.NET MVC中工作

  20. 20

    ASP.NET MVC在当前上下文中不存在名称“文件”

  21. 21

    共享布局视图可以在ASP.NET MVC中具有控制器吗?

  22. 22

    ASP.NET MVC5:对具有会话的控制器进行单元测试

  23. 23

    基于路由数据的具有不同模型类型的Asp.net单控制器操作

  24. 24

    如何在ASP.NET Core中找到具有特殊名称空间的控制器

  25. 25

    共享布局视图可以在ASP.NET MVC中具有控制器吗?

  26. 26

    具有ASP.NET Identity的模型的独特属性

  27. 27

    具有多个应用程序的ASP.NET Identity

  28. 28

    具有ASP.NET身份的动态访问控制

  29. 29

    ASP.NET MVC授权具有多个角色的用户

热门标签

归档