Identity用户管理入门三(注册用户)
用户注册主要有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用户管理入门三(注册用户)的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- Identity角色管理五(添加用户到角色组)
因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
- Identity用户管理入门六(判断是否登录)
目前用户管理的增删改查及登录功能已经全部实现,但存在一个问题,登录后要取消登录按钮显示退出按钮,未登录应该有注册按钮,现实现过程如下 一.Startup.cs中增加服务 app.UseAuthenti ...
- Identity用户管理入门二(显示用户列表)
在Controllers中新建AccountController,并在构造方法(函数)中注入SignInManager,UserManager UserManager 用户管理(注册,查找,修改, ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Identity用户管理入门七(扩展用户字段)
在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...
- Identity用户管理入门五(登录、注销)
一.建立LoginViewModel视图模型 using System.ComponentModel.DataAnnotations; namespace Shop.ViewModel { publi ...
- Identity用户管理入门四(修改、删除用户)
修改用户不能修改Id及用户名所以创建视图模型时需要去除,新增用户跟修改用户基本视图一直,所以不再做演示 一.新建UpdateUserViewModel视图模型 using System.Compone ...
随机推荐
- LeetCode入门指南 之 链表
83. 删除排序链表中的重复元素 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 .返回同样按升序排列的结果链表. class Soluti ...
- POJ 1190 生日蛋糕题解
题目地址:http://poj.org/problem?id=1190 一道很有趣的搜索题--主要是剪枝-- 我弄了5个剪枝: 1.当前剩余层数>=上层半径,剪掉 2.当前剩余层数>=上层 ...
- Android中的一些小细节
在代码中获取到的padding .margin.getWidth.event.getX.context.getResources().getDimensionPixelSize(R.dimen.key ...
- Java数组06——冒泡排序
冒泡排序 例子: package array; import java.util.Arrays; public class ArrayDemon08 { public static ...
- Moco框架jar下载
下载地址: https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/ 选择如下图下载 下载成功即可使用
- 10 个超棒的 JavaScript 简写技巧
今天我要分享的是10个超棒的JavaScript简写方法,可以加快开发速度,让你的开发工作事半功倍哦. 开始吧! 1. 合并数组 普通写法: 我们通常使用Array中的concat()方法合并两个数组 ...
- Linux中的DNS的正解析
目录 一.DNS概述 1.1.DNS定义 1.2.域名结构 1.3.DNS域名解析的方式 1.4.DNS服务器类型 1.5.BIND服务 BIND服务器端程序 二.构建DNS域名正向解析步骤 一.DN ...
- k8s之数据存储-配置存储
ConfigMap configmap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的 创建configmap.yaml,内容如下 apiVersion: v1 kind: ConfigMap ...
- 【监控】Zabbix安装
目录 一.监控目的 二.监控方式 三.主流监控系统 四.Zabbix介绍 五.Zabbix服务端安装 5.1 环境介绍 5.2 准备系统环境 5.3 安装Nginx(源码编译安装) 5.3.1 配置N ...
- Pytest+Allure 示例
0. 前言 简介 Allure 框架是一个灵活的.轻量级的.支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有 ...