我正在使用asp.net身份进行登录和身份验证。 使用以下方法登录时,我收到密码字段错误
model =是用户实体
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
bool isPersistent = false;
await SignInAsync(user, isPersistent);
return RedirectToLocal(returnUrl);
}
输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符
答案 0 :(得分:0)
你在使用EF吗?如果是这样,你不应该在你的edmx上添加AspNetRoles,AspNetUserClaims,AspNetUserLogins和AspNetUserRoles。
另外,我总是使用如下的“登录”方法。如果我需要保留一些信息(比如userRole,userName等),我会使用如下的Session。
public async Task<ActionResult> Login(LoginViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var user = await UserManager.FindAsync(model.Email, model.Password);
//var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
if (user != null)
{
string userRole = UserManager.GetRoles(user.Id).FirstOrDefault();
Session["userRole"] = userRole;
Session["userName"] = model.Email;
await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "Invalid username or password");
return View(model);
}
}
因此可以尝试
await SignInManager.PasswordSignInAsync
或
await SignInManager.SignInAsync