在 ASP.NET CORE MVC Identity 中,我们可以使用 UserManager 和 SignInManager 对象来管理用户注册和登录。
要检查在用户注册时电邮是否已存在,我们可以在 User Registration Action 中编写自定义代码来实现此目的。
在注册页面的 Submit 事件中,我们可以使用 UserManager 对象搜索数据库以查找用户。
如果用户的电子邮件已在数据库中,则显示一个自定义消息,否则继续进行用户注册流程。
下面是示例代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Identity;
using System.Threading.Tasks;
using IdentityDemo.Models;
namespace IdentityDemo.Controllers
{
public class AccountController : Controller
{
private readonly UserManager _userManager;
public AccountController(UserManager userManager)
{
_userManager = userManager;
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = await _userManager.FindByEmailAsync(model.Email);
if (user != null)
{
ModelState.AddModelError("", "Email已存在");
return View(model);
}
user = new ApplicationUser
{
UserName = model.Email,
Email = model.Email
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return RedirectToAction("Index", "Home");
}
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error.Description);
}
}
return View(model);
}
}
}
在这个示例中,我们首先搜索数据库检查用户是否已存在。如果找到了用户,则添加一个自定义消息并终止用户注册流程。否则,继续运行注册流程,创建新用户。
这是一种有效而简单的方法来检查电邮是否已存在,并给出反馈信息。