.Net核心:将用户设置为已登录并进行身份验证

如果我使用Identity(核心),我可以通过编程方式设置登录用户吗?

我们有一个应用程序,要求用户能够通过标准身份(用户电子邮件和密码)登录,或者,能够通过提供的AD详细信息登录 - 并非所有用户都是内部的,因此他们将使用身份,其他想要使用它的能力 .

所以...我正在使用Novell LDAP库,并且能够使用给定的登录详细信息有选择地查询我们的AD,并确定提供的凭据是否有效 . 鉴于它们,我可以在AspNetUser表中查找关联的用户 .

我可以以编程方式将登录用户设置为此标识吗?

即给定从AspNetUser表返回的“用户”,如何以编程方式将此用户设置为当前登录和验证的用户?

回答(1)

2 years ago

您可以通过编程方式登录用户,如下所示:

public class HomeController : Controller
{
    private readonly UserManager<IdentityUser> _userManager;
    private readonly SignInManager<IdentityUser> _signInManager;
    public HomeController(UserManager<IdentityUser> userManager
        , SignInManager<IdentityUser> signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }        
    public async Task<IActionResult> SignIn()
    {
        //get user name from AD
        //query identity user by username
        var username = "test@outlook.com";
        var user = await _userManager.FindByNameAsync(username);
        //sign in user
        await _signInManager.SignInAsync(user, isPersistent: true);
        return Ok();
    }        
}

Note

通过上面的代码进行登录后,您可以获得下一个子请求的 User Identity .