ASP.NET Core - 创建用户

ASP.NET Core - 创建用户 首页 / ASP.Net Core入门教程 / ASP.NET Core - 创建用户

在本章中,无涯教程将讨论如何创建用户,为此,需要与Identity框架进行交互,以确保用户有效,然后创建该用户,然后继续并登录。

  • 身份框架有两个核心服务,一个是 UserManager ,另一个是 SignInManager 。

  • 需要将这两项服务都注入到控制器中,这样,就可以在需要创建用户或登录用户时调用适当的API。

  • 为SignInManager和UserManager添加私有变量,然后在您的AccountController中添加构造函数,该构造函数将使用User类型的两个参数UserManager和User类型的SignInManager。

private SignInManager<User> _signManager; 
private UserManager<User> _userManager;  

public AccountController(UserManager<User> userManager, SignInManager<User> signManager){
   _userManager = userManager; 
   _signManager = signManager; 
}
  • 将继续使用AccountController的POST操作方法,并且应始终在post动作内进行的首批检查之一是检查ModelState是否有效。

    无涯教程网

  • 如果ModelState有效,那么知道用户为提供了用户名和密码并确认了密码;如果没有,需要请他们提供正确的信息。

  • 这是Register操作的实现。

[HttpPost] 
public async Task<IActionResult> Register(RegisterViewModel model) { 
   if (ModelState.IsValid) { 
      var user = new User { UserName = model.Username }; 
      var result = await _userManager.CreateAsync(user, model.Password);
     
      if (result.Succeeded) { 
         await _signManager.SignInAsync(user, false); 
         return RedirectToAction("Index", "Home"); 
      } else { 
         foreach (var error in result.Errors) { 
            ModelState.AddModelError("", error.描述); 
         } 
      }  
   } 
   return View(); 
}        

保存所有文件并运行应用程序,然后转到/account/register 。

Register

输入一个用户名和一个非常简单的5个字符的密码。

Username and Password

现在,单击注册按钮。

Register Button

默认情况下,身份框架会尝试强制执行一些有关密码的规则。

密码必须至少包含6个字符,一个字符必须小写,一个字符必须大写,并且必须有一个非数字字符。

这些错误出现在这里的原因是因为在页面上有一个验证摘要,该摘要总结了从 userManager.CreateAsync 输出返回的错误。

现在,对密码规则有了更多的了解,尝试创建一个足够复杂的密码,然后单击"Register"。

User Management

您现在将看到主页。这意味着该操作有效。现在转到SQL Server Objext Explorer。

Server对象Explorer

右键单击 dbo.AspNetUsers 表,然后选择查看数据。

DBO AspNet Users

现在,您可以看到该用户已成功创建,并且还可以在Users表中看到一条新记录,您还可以看到哈希密码值和用户名,这是无涯教程在 mark.upston 中注册的用户名。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

赵成的运维体系管理课 -〔赵成〕

快速上手Kotlin开发 -〔张涛〕

后端存储实战课 -〔李玥〕

正则表达式入门课 -〔涂伟忠〕

React Hooks 核心原理与实战 -〔王沛〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

Vue 3 企业级项目实战课 -〔杨文坚〕

AI绘画核心技术与实战 -〔南柯〕

好记忆不如烂笔头。留下您的足迹吧 :)