首页 文章

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

提问于
浏览
1

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

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

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

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

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

1 回答

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

    Note

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

相关问题