首页 文章

更改密码ASP.NET Core后登录失败

提问于
浏览
2

我正在使用ASP.NET Core 1.0和身份资料来验证和授权用户 . 这一切都很好,除了一件事:

如果用户重置或更改其密码,则在重新启动ASP.NET应用程序之前,他无法使用新凭据登录 . 表示新密码已成功保存在数据库中,但Method _signInManager.PasswordSignInAsync() 不使用当前数据,而是使用旧数据 . 似乎在EF Core或SignInManager / UserStore中有类似缓存的东西 .

注册后登录工作也很好,重置或更改密码后只是一个问题 .

2 回答

  • 2

    找到问题的原因:Auth在一个单独的MiddleWare中完成,它具有错误的初始化并使用旧的EF DbContext .

    将DbContext与DI一起使用是ASP.NET Core中的一个大问题 . DbContext应该在一个非常小的范围内使用,用简单的using语句定义 . 不幸的是,ASP.NET Core身份使用在DI中注册的DbContext . 更好的解决方案是将一个DbContext工厂注册到DI,以创建一个需要它的小范围DbContext加班 .

  • 3

    我也发现使用过时的DbContext我的身份验证中间件有问题 .

    一种解决方案是使用以下代码行刷新auth中间件的身份解析器中的用户:

    await _dbContext.Entry(userToVerify).ReloadAsync();

    在此之后,我能够根据最新数据验证用户的凭据 .

相关问题