如何 return 在 ASP.NET Core v3 中使用 Identity 描述所有错误
How to return all errors descriptions with Identity in ASP.NET Core v3
我正在学习 login/register 在 asp.net 核心中使用身份,我正在尝试在寄存器中添加错误,这是我的代码
if (ModelState.IsValid)
{
var user = new IdentityUser
{
UserName = model.Username,
Email = model.Email,
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var signInresult = await _signInManager.PasswordSignInAsync(model.Username, model.Password, false, false);
if (signInresult.Succeeded)
{
return RedirectToAction("Index");
}
}
else
{
List<IdentityError> errorList = result.Errors.ToList();
string errors = "";
foreach (var error in errorList)
{
errors = errors + error.Description.ToString();
}
return Content(errors);
}
return Redirect("Index");
}
这里的问题是 errorList 中的错误是一个一个返回的,而不是像我得到 "username is taken" 或 "password must contain a letter" 那样全部返回。但不是所有的人都一次。我该如何解决?
The problem here is the errors in errorList are returned one by one instead of all of them like,
如果我没理解错的话,你不想用foreach一个一个的得到错误,你可以得到所有的错误如下
else
{
List<IdentityError> errorList = result.Errors.ToList();
var errors = string.Join(", ", errorList.Select(e=>e.Description));
return Content(errors);
}
我正在学习 login/register 在 asp.net 核心中使用身份,我正在尝试在寄存器中添加错误,这是我的代码
if (ModelState.IsValid)
{
var user = new IdentityUser
{
UserName = model.Username,
Email = model.Email,
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var signInresult = await _signInManager.PasswordSignInAsync(model.Username, model.Password, false, false);
if (signInresult.Succeeded)
{
return RedirectToAction("Index");
}
}
else
{
List<IdentityError> errorList = result.Errors.ToList();
string errors = "";
foreach (var error in errorList)
{
errors = errors + error.Description.ToString();
}
return Content(errors);
}
return Redirect("Index");
}
这里的问题是 errorList 中的错误是一个一个返回的,而不是像我得到 "username is taken" 或 "password must contain a letter" 那样全部返回。但不是所有的人都一次。我该如何解决?
The problem here is the errors in errorList are returned one by one instead of all of them like,
如果我没理解错的话,你不想用foreach一个一个的得到错误,你可以得到所有的错误如下
else
{
List<IdentityError> errorList = result.Errors.ToList();
var errors = string.Join(", ", errorList.Select(e=>e.Description));
return Content(errors);
}