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会提示下红波浪线(错误),选择纠错为“生成属性”的哪一项。注意:自动生成会是public string UserName { get; internal set; } 必须把internal set改为set,否则后期无法获取到值。
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)]
[RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage ="用户名由字母或数字组成。")]
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、修改密码强度:打开Startup.cs,在public class Startup{}内找public void ConfigureServices(IServiceCollection services){}修改services.AddIdentity<ApplicationUser, IdentityRole>()为如下代码
services.AddIdentity<ApplicationUser, IdentityRole>(o => {
// 配置身份选项
o.Password.RequireDigit = false;//是否需要一个数字(0-9).
o.Password.RequireLowercase = false;//是否需要一个小写字母(a-z).
o.Password.RequireUppercase = false;//是否需要一个大写字母(A-Z).
o.Password.RequireNonLetterOrDigit = false;//是否包含一个非字母或数字字符。
o.Password.RequiredLength = 6;//设置密码长度最小为6
})
5、修改login,因为改为了用户名注册,如果还用email登陆的话,一定出现错误。
首先在ViewModels文件夹下找LoginViewModel.cs,在模型内添加 public string UesrName { get; set; },好了在上面堆你想要的规则吧。
[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模型项去掉或者注释掉,否则你登陆不上去且还不给提示。
6、之后在Views文件夹中的login.cshtml文件中原来为“email”的地方改为“UserName”。
7、打开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);
现在,各位可以试试了。
asp.net identity 3.0.0 在MVC下的基本使用(一)的更多相关文章
- asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...
- asp.net identity 2.2.0 在MVC下的角色启用和基本使用(一)
基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 ...
- asp.net identity 2.2.0 中角色启用和基本使用(六)
创建用户管理相关视图 第一步:添加视图 打开UsersAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系 ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)
有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(三)
角色管理功能: 界面部分: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.mas ...
- asp.net identity 2.2.0 中角色启用和基本使用(二)
建立模型 第一步:在Models文件夹上点右键 >添加>类 类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 ...
- asp.net identity 2.2.0 中角色启用和基本使用(三)
创建控制器 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs 第二步:添加命 ...
- asp.net identity 2.2.0 中角色启用和基本使用(四)
创建角色相关视图 第一步:添加视图 打开RolesAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系统会 ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(二)
管理用户功能: 界面部分: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.mas ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(一)
基本环境:asp.net 4.5.2 仔细看了在Webform下,模板就已经启动了角色控制,已经不用再进行设置了.直接调用相关类就可以了.这和原来在网站根目录下配置Web.config完全不同了. 相 ...
随机推荐
- word20161208
EAP, Extensible Authentication Protocol / 可扩展身份验证协议 EFS, encrypting file system / 加密文件系统 embedded ob ...
- linux 配置ssh免密码登陆本机
1.安装 sudo apt-get install ssh 2.配置无密码登录 ssh-keygen -t rsa 遇到停顿按回车即可 进入/home/zeze/.ssh目录(隐藏目录,在winSCP ...
- python __call__ 内置函数的使用
对象通过提供__call__(slef, [,*args [,**kwargs]])方法可以模拟函数的行为, 如果一个对象x提供了该方法,就可以像函数一样使用它,也就是说x(arg1, arg2... ...
- Vim 键盘指令高清图
个人感觉挺好用的 推荐大家使用windows版的vim,个人用着感觉不错,在linux上用惯了vim的朋友可以试试这个.
- TCP与UDP的区别
TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...
- Nodejs学习笔记(十二)--- 定时任务(node-schedule)
目录 写在之前 Cron风格定时器 通配符解释 范围触发 递归规则定时器 对象文本语法定时器 取消定时器 写在之后 写在之前 在实际开发项目中,会遇到很多定时任务的工作.比如:定时导出某些数据.定时发 ...
- AngularJS 表单
AngularJS 表单是输入控件的集合. HTML控件 以下 HTML input 元素被称为 HTML 控件: input 元素 select 元素 button 元素 textarea 元素 H ...
- SpringBoot实战配置
http://blog.csdn.net/sun_t89/article/details/51944252 http://www.cnblogs.com/kreo/p/4423362.html
- [BI项目记]-搭建代码管理环境之签入代码
此篇主要介绍如何基于TFS环境创建进行BI项目最简单的代码签入和签出工作. 首先介绍BI项目中的SSAS项目.SSAS项目主要包含Cube多维数据集和数据挖掘模型,是在微软BI产品体系中重要的一个组件 ...
- Could not load file or assembly 'System.ServiceModel.DomainServices.Hosting'.系统找不到指定文件
项目部署到服务器后出现如下错误信息: Parser Error Message: Could not load file or assembly 'System.ServiceModel.Domain ...