几年前,我使用.Net 4.6和ASP Identity实现了一个Web应用程序,我在后端使用JWT进行授权和身份验证,并将AngularJS用于客户端。我记得,我在BitOfTech.net上使用了一系列帖子作为实施的基础。我使用VS2015社区来实现。
我现在正尝试使用ASP Identity Core,.Net Core和Angular 4在VS2017社区中重新实现此应用程序。
我有部分Angular工作并重新实现了JWT令牌,并且它使用正确的数据响应.well-known / openid-configuration端点,并且使用令牌端点调用AuthorizationController登录失败。
我已解决了许多问题,其中最大的问题是使用SQL Query升级该数据库,但AccountController在调用返回false的_userManager.CheckPasswordAsync()时失败。我正在使用Postman来运行测试,用户名和密码是正确的,因为针对相同的aspnet Identity DB运行的旧版本可以运行。
在早期的项目中,我必须实现从PasswordHasher派生的SQLPasswordHasher,它覆盖了VerifyHashedPassword()。我忘记了为什么我需要这样做的原因但我似乎记得因为DB最初是使用ASP.Net Membership构建的,所以存储的密码是使用较旧的算法生成的。
所以我决定重新实现它,发现我需要创建一个基于IPasswordHasher的类,它实现了VerifyHashedPassword()和HashPassword()
然后我所要做的就是在启动时通过分配userManager.PasswordHasher = SQLPasswordHasher
将我的SQLPasswordHasher注入UserManager但那是我被困的地方。在我的旧实现中,在我的代码中有一个地方我创建了一个UserManager,但是启动已经发生了很大变化,以至于我找不到我要做的事情。谷歌建议修改IdentityConfig.cs,但似乎不再使用它。
如果有人可以向我解释我是如何将自己的PasswordHasher注入到UserManager中的,我会永远感激。
我不确定这是否相关,但我使用的是OpenIddict。
感谢您阅读此内容。
答案 0 :(得分:0)
我是对的。我需要覆盖PasswordHasher而不是创建一个全新的类。
可以关闭