这个问题通常是因为登录第一次时,ABP还没有生成认证cookie,所以会导致登录失败。解决方法是在登录失败后再次调用登录方法即可。以下是一个代码示例:
public async Task Login(LoginViewModel loginModel, string returnUrl = "")
{
var loginResult = await _signInManager.PasswordSignInAsync(
loginModel.UsernameOrEmailAddress,
loginModel.Password,
loginModel.RememberMe,
true
);
if (loginResult == AbpLoginResultType.Success)
{
await _authenticationManager.SignInAsync(await GetIdentityAsync(loginModel.UsernameOrEmailAddress, loginModel.Password, false), loginModel.RememberMe);
}
else if (loginResult == AbpLoginResultType.UserIsNotActive)
{
return RedirectToAction("Login", new { returnUrl = returnUrl });
}
else
{
// If login fails for the first time, try again
loginResult = await _signInManager.PasswordSignInAsync(
loginModel.UsernameOrEmailAddress,
loginModel.Password,
loginModel.RememberMe,
true
);
if (loginResult == AbpLoginResultType.Success)
{
await _authenticationManager.SignInAsync(await GetIdentityAsync(loginModel.UsernameOrEmailAddress, loginModel.Password, false), loginModel.RememberMe);
}
else if (loginResult == AbpLoginResultType.UserIsNotActive)
{
return RedirectToAction("Login", new { returnUrl = returnUrl });
}
else
{
return RedirectToAction("Login", new { returnUrl = returnUrl });
}
}
return RedirectToLocal(returnUrl);
}
下一篇:ABP登录第一次失败