我尝试在使用身份的新版ASP.NET网站中共享登录,其中现有的旧网站的成员资格数据库是预身份(ASP.NET成员身份)。我遇到的第一个障碍是没有迁移表,而且我没有找到太多信息来确定我是否能够做到这一点。如何有效地使用该数据库进行身份验证?我根本无法控制其他网络应用程序,只是要求他们匹配我的MachineKey。
澄清:域名完全不同,但它们共享相同的后端数据库,因此基于cookie的解决方案不起作用。答案 0 :(得分:0)
这个microsoft documentation应该可以帮到你。
如果您有权访问数据库,我不明白为什么基于Cookie的解决方案不适合您。首先,您分别使用现有数据库查询和验证用户详细信息,然后根据第一个操作的结果设置Cookie。
此video为新的ASP核心授权提供了很好的见解。我提供了他们sample applications之一的代码段,解释了我建议的解决方案。
IUserRepository _userRepository;
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(string userName, string password, string returnUrl = null)
{
if (!_userRepository.ValidateLogin(userName, password))
{
ViewBag.ErrorMessage = "Invalid Login";
return View();
}
await HttpContext.Authentication.SignInAsync("Cookie", _userRepository.Get(userName),
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddMinutes(20),
IsPersistent = false,
AllowRefresh = false
});
return RedirectToLocal(returnUrl);
}
public async Task<IActionResult> Logout()
{
await HttpContext.Authentication.SignOutAsync("Cookie");
return RedirectToAction("Index", "Home");
}