将用户从 Spring Boot 迁移到 ASP.NET
Posted
技术标签:
【中文标题】将用户从 Spring Boot 迁移到 ASP.NET【英文标题】:Migrating Users from Springboot to ASP.NET 【发布时间】:2022-01-17 17:24:34 【问题描述】:我们正在将后端从 Java Springboot 换成 C# ASP.NET。
Springboot 似乎使用与 ASP 不同的密码散列加密类型。
Springboot$2a$10$AxIQRdy2pmdXHBotzu3g0OOCAoaBZFvDaFmlSqlsChPhrCoCAmLKy
ASPAQAAAAEAACcQAAAAEJ9QPriBB1QkTaSgRZQBe7mDb+ILWYWHChdjPHbLpfsFjSmpnkI4x2G+aexg0JL01A==
我的方法是覆盖 ASP.NET Identity 中的 UserManager 以使用不同的加密,但希望有人在这里帮助我。
编辑:另外,ASP.NET Identity 有一个用于用户的 SecurityStamp 列。我将如何生成这些
【问题讨论】:
看起来springboot中有很多不同的选项。您首先需要检查您的代码以找出正在使用的代码baeldung.com/… 【参考方案1】:在深入研究了整个密码哈希主题之后,我找到了一个非常简单的解决方案。
我的 Springboot 后端使用 BCrypt 进行密码散列。在 Nuget 包 BCrypt.Net-Next 的帮助下,我能够在用户登录后验证这些哈希值,如果成功,只需使用 ASP 创建一个新的哈希值。身份。我将此代码添加到我的身份验证函数中:
if (user.PasswordHash.StartsWith("$2a"))
var bcryptResult = BCrypt.Net.BCrypt.Verify(request.Password, user.PasswordHash);
if(!bcryptResult)
throw new Exception($"Credentials for 'request.Email aren't valid'.");
var newHash = _passwordHasher.HashPassword(user, request.Password);
user.PasswordHash = newHash;
await _userManager.UpdateAsync(user);
【讨论】:
以上是关于将用户从 Spring Boot 迁移到 ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle
迁移到 Spring Boot 2 并使用 Spring Batch 4