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

时间:2018-12-10 12:04:54

标签: asp.net asp.net-core .net-core ldap identity

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

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

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

我可以通过编程方式将登录用户设置为此身份吗?

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

1 个答案:

答案 0 :(得分:0)

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

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();
    }        
}

注意

通过上述代码登录后,您可以获取User Identity用于下一个子请求。