用户注册主要有2个方法,1、密码加密 2、用户注册 3、ASP.NET Core Identity 使用密码策略、锁定和 cookie 配置等设置的默认值。 可以在类中重写这些设置 Startup(官方详情点这里

首先创建CreateUserViewModel视图模型

using System.ComponentModel;
using System.ComponentModel.DataAnnotations; namespace Shop.ViewModel
{
public class CreateUserViewModel
{
[Required(ErrorMessage = "用户名不能为空")]
[DisplayName("用户名")]
public string UserName { get; set; } [EmailAddress(ErrorMessage = "邮箱格式不正确")]
[DisplayName("邮箱")]
public string Email { get; set; } [DisplayName("手机号")]
[MinLength(11,ErrorMessage = "手机位数不足11位"), StringLength(11)]
public string PhoneNumber { get; set; } [Required(ErrorMessage = "密码不能为空")]
[DataType(DataType.Password)]
[DisplayName("密码")]
public string PasswordHash { get; set; }
}
}

创建regiseter方法

public IActionResult Register()
{
return View();
}

创建Register视图

@model Shop.ViewModel.CreateUserViewModel
@{
ViewData["Title"] = "Register";
} <h1>Register</h1>
<form class="form-horizontal" asp-action="Register" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<fieldset>
<div class="control-group">
<label class="control-label">用户名</label>
<div class="controls">
<input type="text" placeholder="" class="input-xlarge" asp-for="UserName">
<span asp-validation-for="UserName" class="text-danger"></span>
</div>
</div> <div class="control-group">
<label class="control-label">邮箱</label>
<div class="controls">
<input type="text" placeholder="" class="input-xlarge" asp-for="Email">
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div> <div class="control-group">
<label class="control-label">手机号</label>
<div class="controls">
<input type="text" placeholder="" class="input-xlarge" asp-for="PhoneNumber">
<span asp-validation-for="PhoneNumber" class="text-danger"></span>
</div>
</div> <div class="control-group">
<label class="control-label">密码</label>
<div class="controls">
<input type="text" placeholder="" class="input-xlarge" asp-for="PasswordHash">
<span asp-validation-for="PasswordHash" class="text-danger"></span>
</div>
</div>
<input type="submit" class="btn btn-primary" value="注册">
</fieldset>
</form>
@*输入内容跟模型定义规则不符时需要验证提示加入此脚本*@
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

创建Register post方法

[HttpPost]
public async Task<IActionResult> Register(CreateUserViewModel input)
{
if (ModelState.IsValid)
{
var user = new IdentityUser
{
UserName = input.UserName,
Email = input.Email,
PhoneNumber = input.PhoneNumber,
PasswordHash = input.PasswordHash
}; //创建用户
var result = await _userManager.CreateAsync(user);
//如果成功则返回用户列表
if (result.Succeeded)
{
return RedirectToAction("Index");
}
}
return View(input);
}

效果展示,如果验证错误则有如下提示

如果成功提交则返回用户列表页,注意:未做编号自增及用户名是否重复的验证

Identity用户管理入门三(注册用户)的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  2. Identity角色管理五(添加用户到角色组)

    因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...

  3. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  4. Identity用户管理入门六(判断是否登录)

    目前用户管理的增删改查及登录功能已经全部实现,但存在一个问题,登录后要取消登录按钮显示退出按钮,未登录应该有注册按钮,现实现过程如下 一.Startup.cs中增加服务 app.UseAuthenti ...

  5. Identity用户管理入门二(显示用户列表)

    在Controllers中新建AccountController,并在构造方法(函数)中注入SignInManager,UserManager UserManager   用户管理(注册,查找,修改, ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. Identity用户管理入门七(扩展用户字段)

    在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...

  8. Identity用户管理入门五(登录、注销)

    一.建立LoginViewModel视图模型 using System.ComponentModel.DataAnnotations; namespace Shop.ViewModel { publi ...

  9. Identity用户管理入门四(修改、删除用户)

    修改用户不能修改Id及用户名所以创建视图模型时需要去除,新增用户跟修改用户基本视图一直,所以不再做演示 一.新建UpdateUserViewModel视图模型 using System.Compone ...

随机推荐

  1. 【前端 · 面试 】HTTP 总结(十)—— HTTP 缓存应用

    最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正.交流. 争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火. 前言 通过前面几篇内容的学习,我们 ...

  2. Windows协议 LDAP篇 - 域用户和计算机用户

    域用户 查询域用户 通过SAMR协议查询(net user就是通过这种协议查询的),samr也不是一种专门的协议,是一个RPC接口 在impacket里有个脚本samrdump.py,就是专门调用这个 ...

  3. SpringMVC学习07(Ajax)

    7.Ajax研究 7.1 简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种在无需重新加载整个网页的情况 ...

  4. PTA 朋友圈 (25 分) 代码详解 (并查集)

    1.题目要求: 某学校有N个学生,形成M个俱乐部.每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈.一个学生可以同时属于若干个不同的俱乐部.根据"我的朋友的朋友也是我的朋友" ...

  5. 【笔记】Jupyter notebook 高级 魔法命令

    魔法命令 %run 可以调用自己编写的代码 代码内容 使用结果 测试时间有%timeit,%time %timeit 测试时间(生成表达式的逻辑) 测试次数是可以不定义的,有系统自己决定 算法复杂度可 ...

  6. 遗传算法Genetic Algorithm

    遗传算法Genetic Algorithm 好家伙,回回都是这个点,再这样下去人估计没了,换个bgm<夜泊秦淮>,要是经典咏流传能投票选诗词,投票选歌,俺一定选这个 开始瞎叨叨 遗传算法的 ...

  7. 微信小程序开发(二)——使用WeUI组件库

    一.前言 因为小程序的api描述都比较简单,并没有wxml及wxss的描述,一定会想小程序有没有一个UI库,类似于前端中的Bootstrap,MD,Semantic UI这样的框架UI库.有的,它就是 ...

  8. S3C2440—2.裸机开发步骤及工具使用

    文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...

  9. Python 赋值、浅拷贝、深拷贝之间区别

    赋值 不会开辟新的内存空间,是对原对象值的引用 当原对象值,改变后,赋值的变量也会随之改变 浅拷贝 只会拷贝最外层的对象,会开辟新的内存空间,和原对象是互相独立的 如果这个对象有嵌套对象的话,浅拷贝只 ...

  10. Django3使用WebSocket实现WebShell

    前言 最近工作中需要开发前端操作远程虚拟机的功能,简称WebShell. 基于当前的技术栈为react+django,调研了一会发现大部分的后端实现都是django+channels来实现websoc ...