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

在图片中,我们有nameidentifier、name和SecurityStamp,它们不在我的数据库中,我猜它们是在登录时添加的。我需要防止名称声明被添加,因为它似乎正在用我为用户注册时添加到数据库中的claim name覆盖声明。
这就是我为用户添加注册声明的方式。(也许我对用户Firstname使用了错误的声明?)

因此,总而言之,我可以关闭添加的默认索赔,还是应该使用不同的索赔类型?
发布于 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),也没有什么可以阻止您创建自己的索赔类型的。
发布于 2021-11-20 23:00:33
这就是我为用户添加注册声明的方式。(也许我对用户Firstname使用了错误的声明?)
您不需要自己添加声明,您可以使用UserClaimsPrincipalFactory<IdentityUser>为您做这件事:
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
// Inject the following
UserManager<AppUser> userManager,
IOptions<IdentityOptions> identityOptionsvar factory = new UserClaimsPrincipalFactory<AppUser>(userManager, identityOptions);
var claimsPrincipal = await factory.CreateAsync(user);如果由于某种原因不能使用工厂,可以查阅ClaimsIdentityOptions和UserClaimsPrincipalFactory源代码中的最新标识。
https://stackoverflow.com/questions/44109852
复制相似问题