ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用(三)—用户注册
一、修改用户注册
1、打开Pages文件夹》Account》Register.cshtml,然后双击Register.cshtml.cs
找到public class InputModel,在这里个类里添加UserName属性
[Required] [StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)] [Display(Name = "用户账号")] [DataType(DataType.Text)] [RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage = "用户名由字母或数字组成。")] public string UserName { get; set; }
这里说明下, Razor页面模式跟mvc在此出现了严重的不同。 但就代码说没有什么不同几乎完全一样,但是存放的位置却有了根本的区别。个人研究分析的结果是:Razor页面模式其实是把mvc中的控制器化整为零了,即原来控制器中的操作代码被分布放到了各个页面的.cshtml.cs文件中了。这样一来由原来mvc中文件按类型分类变成了按功能分类,这样的好处就是每个页面形成了模块化,这个页面涉及的数据都在这里,便于维护,不用控制器、模型、视图来回切换了。
2、修改public async Task<IActionResult> OnPostAsync(string returnUrl = null)中的var user = new ApplicationUser { UserName = Input.Email, Email = Input.Email };
改为var user = new ApplicationUser { UserName = Input.UserName, Email = Input.Email };
因为每个页面只有一个操作了,所以也就只有这一个OnPostAsync方法了。
3、打开Pages文件夹》Account》Register.cshtml,在register_Page文件中(其实就是下面的那个文件)约第15行的位置,添加“用户账号”代码:
<div class="form-group"> <label asp-for="Input.UserName"></label> <input asp-for="Input.UserName" class="form-control" /> <span asp-validation-for="Input.UserName" class="text-danger"></span> </div>
二、修改login。因为改为了用户名注册,如果还用email登陆的话,一定出现错误。
1、打开Pages文件夹》Account》login.cshtml,然后双击Login.cshtml.cs
找到public class InputModel,在这里个类里添加UserName属性
[Required] [StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)] [Display(Name = "用户账号")] [DataType(DataType.Text)] [RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage = "用户名由字母或数字组成。")] public string UserName { get; set; }
同时要把email属性项去掉或者注释掉,否则你登陆不上去且还不给提示。
2、修改public async Task<IActionResult> OnPostAsync(string returnUrl = null)中的var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
改为var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: true);
3、打开Pages文件夹》Account》Login.cshtml,在Login_Page文件中(其实就是下面的那个文件)约第16行的位置,修改原来为“Input.Email”的地方改为“Input.UserName”。