当前位置: 首页 > 编程语言 > C#

Identity2.0声明未添加到数据库共享

时间:2023-04-10 11:30:57 C#

Identity2.0声明未添加到数据库我正在使用MVC5和最新版本的Identity(2.1)我正在尝试为facebookaccess_token创建用户声明。我以前从未创建过声明,但据我所知,我的其他身份功能运行良好。我在Startup.Auth.cs中有这行代码:context.Identity.AddClaim(newClaim("urn:facebook:access_token",context.AccessToken,xmlSchemaString,"Facebook"));如果您需要更多参考完整代码在这里:将facebooksdk与Identity2.0集成一个巨大的字符串)。但是,成功登录后,它永远不会进入数据库。作为测试,我尝试通过将行更改为此来简化它:context.Identity.AddClaim(newSystem.Security.Claims.Claim(ClaimTypes.Email,"test@example.com"));结果相同,没有错误,但没有向数据库添加任何内容。然后我尝试在IdentityModels.cs中添加这行代码,告诉您放置自定义声明://AddcustomuserclaimshereuserIdentity.AddClaim(newClaim(ClaimTypes.DateOfBirth,"01/01/1972"));相同结果...没有错误,也从未进入数据库。谁能想到我的问题可能是什么原因造成的?在我的身份设置中唯一定制的是我关于如何使用用户名而不是电子邮件(作为用户名)的文章。此外,我更改了OnModelCreating块中的身份表名称(例如UserClaims),这似乎是一个相当标准的过程。我有一种感觉,这将是一些菜鸟的举动,但此刻,我被难住了。任何帮助是极大的赞赏。数据库保留用户的自定义声明。如果用户在数据库中有任何声明,它们将在登录时应用于身份验证cookie。要向数据库添加声明,您需要使用UserManager:awaituserManager.AddClaimAsync(userId,newClaim("MyClaimType","MyClaimValue"));如果你在ClaimsIdentity中添加声明,声明不会在数据库中,而是ClaimsIdentity直接添加到cookie中,用户登录时不会自动重新添加声明。所以你的问题不是打到数据库保存语句?声明存储在具有ASP.NETIdentity的安全cookie中;)ASP.NETIdentityFramework将在每个请求开始时读取cookie,并根据我的理解为您填充声明集合。只需检查登录后您可以从MVC控制器中看到facebook语句。我觉得其实是没有问题的。以上就是C#学习教程:Identity2.0声明未加入数据库分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: