ASP.NET使用标识,针对不同的预标识成员资格数据库进行身份验证

时间:2016-07-22 03:38:21

标签: c# asp.net asp.net-mvc entity asp.net-membership

我尝试在使用身份的新版ASP.NET网站中共享登录,其中现有的旧网站的成员资格数据库是预身份(ASP.NET成员身份)。我遇到的第一个障碍是没有迁移表,而且我没有找到太多信息来确定我是否能够做到这一点。如何有效地使用该数据库进行身份验证?我根本无法控制其他网络应用程序,只是要求他们匹配我的MachineKey。

澄清:域名完全不同,但它们共享相同的后端数据库,因此基于cookie的解决方案不起作用。

1 个答案:

答案 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");
    }