asp.net identity 3.0.0 在MVC下的基本使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net identity 3.0.0 在MVC下的基本使用相关的知识,希望对你有一定的参考价值。
注册时信箱转为用户名。
本人习惯使用用户名做注册用户,因为不管是什么终端起码都能少输入几个字符,可以提高用户体验。
这里需要更改控制器,模型和视图
1、打开Controllers目录下的AccountController.cs
找到 public async Task<IActionResult> Register(RegisterViewModel model) 这下面的var user = new ApplicationUser { UserName = model.Email, Email = model.Email };这里两个参数都是绑定的email。
改为var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
更改后vs会提示下红波浪线(错误),选择纠错为“生成属性”的哪一项。
2.vs将在ViewModels文件夹下Account目录下RegisterViewModel.cs模型内的public class RegisterViewModel 中自动添加 public string UserName { get; set; },好了在上面堆你想要的规则吧。
例如:
[Required] [StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)] [Display(Name = "用户账号")] [DataType(DataType.Text)] public string UserName { get; set; }
这里简单说下,新版的mvc模板把原来的model文件夹拆成了models和viewmodels 两个模型文件夹,这是一个改进。这样就使每个视图有自己的模型,会很方便。
3.在Views文件夹中的register.cshtml文件中添加一组代码:
<div class="form-group"> <label asp-for="UserName" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="UserName" class="form-control" /> <span asp-validation-for="UserName" class="text-danger"></span> </div> </div>
大家可以看下,这里的代码和之前的已经不一样了,随着TagHelper的更新,这里的代码也变为 asp-for了。TagHelper的资料请参阅这里。
4、修改login,因为改为了用户名注册,如果还用email登陆的话,一定出现错误。
首先在ViewModels文件夹下找LoginViewModel.cs,在模型内添加 public string UesrName { get; set; },好了在上面堆你想要的规则吧。
[Required] [StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)] [Display(Name = "用户账号")] [DataType(DataType.Text)] public string UserName { get; set; }
接着把email模型项去掉或者注释掉,否则你登陆不上去且还不给提示。
5、之后在Views文件夹中的login.cshtml文件中原来为“email”的地方改为“UserName”。
6、打开AccountController.cs文件,找到 public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) 这个方法
把 var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
改为var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
7、求助:因为新的模板引用了jquery-validation来进行数据校验,但这部分我还没有弄明白。所以请了解这部分的朋友给讲解下,如何降低password的强度设置,现在模板中密码需要大小写字母特殊符号。众所周知的,只要不是过分的弱口令,账号密码被盗的可能性并不高。现在很多用户都是手机上网,输入并不方便,所以我很想修改这部分,做了一些尝试,但都没成功,对这部分机制没搞透。因为采用的是jquery-validation验证数据,此功能应该比model中的规则强大,所以给我的感觉是model中的错误信息已经失效,其规则也属象征性验证。
现在,各位可以试试了。
以上是关于asp.net identity 3.0.0 在MVC下的基本使用的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Identity教程ASP.NET Identity入门
ASP.NET Identity系列教程运用ASP.NET Identity
[ASP.NET MVC] ASP.NET Identity登入技术剖析
如何在 ASP.NET 5 Identity 中设置 PasswordHasherCompatibilityMode.IdentityV3?