用户注册主要有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);
}

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

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

最新文章

  1. jws.mono脚本安装详解
  2. java语法基本知识2
  3. JS中this的值到底为何?
  4. [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
  5. NavMesh系统动态碰撞的探讨
  6. xhr dojo load
  7. 20141104--SQL,查询习题,约束
  8. Linux下进程的同步相互排斥实例——生产者消费者
  9. Url几个常用的函数
  10. SVN遇到Can&#39;t convert string from &#39;UTF-8&#39; to native encoding
  11. HAUT--1262--魔法宝石(暴力)
  12. java环境搭建 windows
  13. Scikit-learn:数据预处理Preprocessing data
  14. flex 强制转换类型失败无法将object转换为XXX
  15. Directory 类
  16. ERROR 1130 (HY000): Host &#39;172.16.1.54&#39; is not allowed to connect to this MySQL server
  17. 【浅说】堆(heap)和栈(stack)区别
  18. [20170705]理解linux su命令.txt
  19. A^B mod C (快速幂+快速乘+取模)题解
  20. python实现并发爬虫

热门文章

  1. Vue Router根据后台数据加载不同的组件(思考-&gt;实现-&gt;不止于实现)
  2. 记一次WindowsServer2012提权 - 烂土豆
  3. Window2016 安装Docker
  4. lerna 常用命令
  5. 代码部署:使用 nginx 代理到云服务器 ( windows 系统)
  6. 0基础学小程序----day2
  7. Jackson格式化时间和科学计数法问题
  8. Java中使用split方法根据英文问号?切割字符串时报错
  9. docker harbor安装
  10. MVVMLight学习笔记(一)---MVVMLight概述