Asp.Net Core-添加用户

xiaoxiao2021-02-28  108

在本章中,我们将讨论如何创建用户。 要继续这样做,我们需要与Identity框架交互,以确保用户是有效的,然后创建该用户,然后继续并登录。

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

我们需要将这两个服务注入我们的控制器。 这样,当我们需要创建用户或登录用户时,我们可以调用相应的API。

让我们为SignInManager和UserManager添加私有变量,然后在AccountController中添加一个构造函数,它将使用User类型的UserManager和User类型的SignInManager两个参数。

1 2 3 4 5 6 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操作的实现。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [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.Description);            }         }       }      return  View();  }

如果我们的ModelState是有效的,我们需要谈谈Identity框架。我们还需要创建一个新的用户实体实例,并将我们的输入model.Username复制到User实体的UserName属性中。

但是,我们不会复制密码,因为没有地方在User实体中存储明文密码。相反,我们将直接将密码传递给Identity框架,这将散列密码。

所以我们有一个userManager。创建一个异步方法,我们必须传递用户名,以便我们可以保存该用户的密码。

这个Async方法返回一个结果,告诉我们实例是成功还是失败,如果失败,它会给我们一些失败的可能原因。

如果结果成功,我们可以登录刚刚创建帐户的用户,然后请求SignInManager签署此用户。现在,将用户重定向回主页,您现在将通过身份验证。

如果结果不成功,那么我们应该尝试告诉用户为什么,从UserManager返回的结果有一个错误集合,我们可以迭代并将这些错误添加到ModelState中。这些错误将在标签助手(例如验证标签助手)的视图中显示,以在页面上显示信息。

在ModelState.AddModelError中,我们可以提供一个键来将错误与特定字段相关联。我们还将使用一个空白字符串,并添加所提供的错误的描述。

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

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

现在,单击注册按钮。

默认情况下,Identity框架尝试对密码实施一些规则。

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

这里出现这些错误的原因是因为我们在页面上有一个验证摘要,它正在检索从userManager.CreateAsync结果返回的错误。

现在我们更多地了解了密码规则是什么,让我们尝试创建一个非常复杂的密码,然后点击注册。

您现在将看到主页。 这意味着添加操作工作正常。 现在让我们转到SQL Server对象资源管理器。

右键单击dbo.AspNetUsers表并选择查看数据。

您现在可以看到用户已成功创建,您还可以在用户表中看到新记录。 您还可以看到散列的密码值以及用户名,这是我们在mark.upston注册的用户名。

版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚 本文标题: Asp.Net Core-添加用户  本文地址:http://www.yuanjiaocheng.net/ASPNET-CORE/core-add-user.html
转载请注明原文地址: https://www.6miu.com/read-30876.html

最新回复(0)