如果我使用身份(核心)身份,可以通过编程方式设置登录用户吗?
我们有一个应用程序,要求用户能够通过标准身份(用户电子邮件和密码)登录,或者能够通过提供的AD详细信息登录-并非所有用户都是内部用户,因此他们将使用身份,其他人希望能够使用它。
所以...我正在使用Novell LDAP库,并且能够使用给定的登录详细信息有选择地查询我们的广告,并确定所提供的凭据是否有效。有了它们,我可以在AspNetUser表中查找关联的用户。
我可以通过编程方式将登录用户设置为此身份吗?
即给定从AspNetUser表返回的“用户”,我如何以编程方式将此用户设置为当前登录并经过身份验证的用户?
答案 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
用于下一个子请求。