gpt4 book ai didi

asp.net-mvc - 以编程方式创建用户后无法登录 ASP.NET Identity 2 站点

转载 作者:行者123 更新时间:2023-12-02 14:14:05 24 4
gpt4 key购买 nike

我有一个新的 MVC 5 razor、EF 6 Web 应用程序,使用 ASP.NET Identity 2 作为成员 系统。当我使用网页上的注册链接手动创建用户时,一切顺利。我可以创建用户,然后可以使用给定的密码登录,然后注销。

我不知道如何使用数据库初始化程序来迁移 Identity 2,Identity 1 和其他 alpha 和 beta 版本有无数的示例,这些示例只会让人们感到困惑。因为我还不知道,所以我使用临时 MVC View 来安装成员资格。

我看到 View 正确执行,我看到用户和角色以及用户与数据库中角色的关联。我还看到用户在记录中具有哈希密码。

但是,执行此操作后我无法使用在 Create 方法中使用的纯文本密码登录身份系统(本地),为什么?顺便说一句,我省略了 try/catch 并检查用户和角色的创建(它们执行时没有错误)。

DbContext ctx = ApplicationDbContext.Create();
transaction = ctx.Database.BeginTransaction();
RoleManager<IdentityRole> roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(ctx));
var roleAdmin = roleManager.Create(new IdentityRole("Admin"));

var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ctx));
ApplicationUser userAdmin = new ApplicationUser { Id = "admin", Email = "me@there.com", UserName = "admin" };
userManager.Create(userAdmin, "Test_2013");
userManager.AddToRole(userAdmin.Id, "Admin");
userManager.Update(userAdmin);

transaction.Commit();

因此,之后,如果我尝试使用电子邮件地址和 Test_2013 密码登录帐户,则会收到一条错误消息,指示用户名/密码不正确。

最佳答案

在对实际数据库(Identity 2)和网络进行大量调查后,我得出的结论是没有人知道:)事实上,有数百万个网站拥有过时的 Identity 信息,甚至放置了已经过时的 Identity 2.0 代码,我必须使用 SQL Profiler 和 SQL Management Studio 进一步深入研究。

在 Identity 2.0 中,有一个 Id 属性,它是一个 nvarchar() 但实际上包含一个 Guid。我想知道为什么微软不直接将其设为唯一标识符类型?!当我应该不理会它时,我设置了这个属性(让它自动生成它)。

同样,在 Identity 2.0 中,有一个用户名字段,我用用户名填充该字段。看来用户名应该与电子邮件相同,否则尝试登录将失败。

关于asp.net-mvc - 以编程方式创建用户后无法登录 ASP.NET Identity 2 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24214840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com