首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Asp .Net标识默认声明在登录后添加

Asp .Net标识默认声明在登录后添加
EN

Stack Overflow用户
提问于 2017-05-22 09:52:17
回答 2查看 1.8K关注 0票数 1

我注意到,在用户注册和登录到我的网站后,一些默认声明被添加到数据库中。

在图片中,我们有nameidentifiernameSecurityStamp,它们不在我的数据库中,我猜它们是在登录时添加的。我需要防止名称声明被添加,因为它似乎正在用我为用户注册时添加到数据库中的claim name覆盖声明。

这就是我为用户添加注册声明的方式。(也许我对用户Firstname使用了错误的声明?)

因此,总而言之,我可以关闭添加的默认索赔,还是应该使用不同的索赔类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-22 10:47:16

ClaimTypes.Name通常用于用户名/登录名

ClaimTypes.NameIdentifier是用户Id。

使用ClaimTypes.GivenName作为名字

https://msdn.microsoft.com/en-us/library/system.identitymodel.claims.claimtypes(v=vs.110).aspx

如果没有符合您需要的内置类型(例如FullName),也没有什么可以阻止您创建自己的索赔类型的。

票数 3
EN

Stack Overflow用户

发布于 2021-11-20 23:00:33

这就是我为用户添加注册声明的方式。(也许我对用户Firstname使用了错误的声明?)

您不需要自己添加声明,您可以使用UserClaimsPrincipalFactory<IdentityUser>为您做这件事:

  1. 在您的控制器中定义注入依赖项:
代码语言:javascript
运行
复制
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;

// Inject the following
UserManager<AppUser> userManager,
IOptions<IdentityOptions> identityOptions
  1. 在行动中这样做:
代码语言:javascript
运行
复制
var factory = new UserClaimsPrincipalFactory<AppUser>(userManager, identityOptions);
var claimsPrincipal = await factory.CreateAsync(user);

如果由于某种原因不能使用工厂,可以查阅ClaimsIdentityOptionsUserClaimsPrincipalFactory源代码中的最新标识。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44109852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档