Startup.cs-> Configure

app.UseAuthentication(); //启动验证

Controllers->AccountController.cs 新建

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6 using Microsoft.AspNetCore.Mvc;
 7 using IdentityMvc.Models;
 8 using Microsoft.AspNetCore.Identity;
 9 using Microsoft.AspNetCore.Authorization;
10 using IdentityMvc.Models.AccountViewModels;
11 using Microsoft.AspNetCore.Authentication;
12
13 namespace IdentityMvc.Controllers
14 {
15     public class AccountController : Controller
16     {
17         private readonly UserManager<ApplicationUser> _userManager;
18         private readonly SignInManager<ApplicationUser> _signInManager;
19
20         public AccountController(
21             UserManager<ApplicationUser> userManager,
22             SignInManager<ApplicationUser> signInManager)
23         {
24             _userManager = userManager;
25             _signInManager = signInManager;
26         }
27         [TempData]
28         public string ErrorMessage { get; set; }
29
30         [HttpGet]
31         [AllowAnonymous]
32         public IActionResult Register(string returnUrl = null)
33         {
34             ViewData["ReturnUrl"] = returnUrl;
35             return View();
36         }
37         [HttpPost]
38         [AllowAnonymous]
39         [ValidateAntiForgeryToken]
40         public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
41         {
42             ViewData["ReturnUrl"] = returnUrl;
43             if (ModelState.IsValid)
44             {
45                 var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
46                 var result = await _userManager.CreateAsync(user, model.Password);
47                 if (result.Succeeded)
48                 {
49
50                     //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
51
52                     await _signInManager.SignInAsync(user, isPersistent: false);
53                     return RedirectToLocal(returnUrl);
54                 }
55                 AddErrors(result);
56             }
57
58             // If we got this far, something failed, redisplay form
59             return View(model);
60         }
61
62         private void AddErrors(IdentityResult result)
63         {
64             foreach (var error in result.Errors)
65             {
66                 ModelState.AddModelError(string.Empty, error.Description);
67             }
68         }
69
70         private IActionResult RedirectToLocal(string returnUrl)
71         {
72             if (Url.IsLocalUrl(returnUrl))
73             {
74                 return Redirect(returnUrl);
75             }
76             else
77             {
78                 return RedirectToAction(nameof(HomeController.Index), "Home");
79             }
80         }
81     }
82 }

View Code

Models->AccountViewModels->RegisterViewModel.cs 新建

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel.DataAnnotations;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6
 7 namespace IdentityMvc.Models.AccountViewModels
 8 {
 9     public class RegisterViewModel
10     {
11         [Required]
12         [EmailAddress]
13         [Display(Name = "Email")]
14         public string Email { get; set; }
15
16         [Required]
17         [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
18         [DataType(DataType.Password)]
19         [Display(Name = "Password")]
20         public string Password { get; set; }
21
22         [DataType(DataType.Password)]
23         [Display(Name = "Confirm password")]
24         [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
25         public string ConfirmPassword { get; set; }
26     }
27 }

View Code

Views->Account->Register.cshtml 新建

 1 @model  RegisterViewModel
 2 @{
 3     ViewData["Title"] = "Register";
 4 }
 5
 6 <h2>@ViewData["Title"]</h2>
 7
 8 <div class="row">
 9     <div class="col-md-4">
10         <form asp-route-returnUrl="@ViewData["ReturnUrl"]" method="post">
11             <h4>Create a new account.</h4>
12             <hr />
13             <div asp-validation-summary="All" class="text-danger"></div>
14             <div class="form-group">
15                 <label asp-for="Email"></label>
16                 <input asp-for="Email" class="form-control" />
17                 <span asp-validation-for="Email" class="text-danger"></span>
18             </div>
19             <div class="form-group">
20                 <label asp-for="Password"></label>
21                 <input asp-for="Password" class="form-control" />
22                 <span asp-validation-for="Password" class="text-danger"></span>
23             </div>
24             <div class="form-group">
25                 <label asp-for="ConfirmPassword"></label>
26                 <input asp-for="ConfirmPassword" class="form-control" />
27                 <span asp-validation-for="ConfirmPassword" class="text-danger"></span>
28             </div>
29             <button type="submit" class="btn btn-default">Register</button>
30         </form>
31     </div>
32 </div>

View Code

Views->_ViewImports.cshtml

@using IdentityMvc.Models.AccountViewModels
@using Microsoft.AspNetCore.Identity

转载于:https://www.cnblogs.com/LiuFengH/p/9418062.html

mvc core2.1 Identity.EntityFramework Core 注册 (二)相关推荐

  1. mvc core2.1 Identity.EntityFramework Core 导航状态栏(六)

    之前做的无法 登录退出,和状态,加入主页导航栏 Views ->Shared->_Layout.cshtml <div class="navbar-collapse col ...

  2. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

    前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...

  3. asp.net mvc 5 identity 2.0 注册时密码强度验证

    asp.net mvc 5 identity 2.0 注册时密码强度验证 密码强度验证分两部分,一部分是客户端,即浏览器中进行验证,另一部分是 identity 的 UserManager 中进行的. ...

  4. EntityFramework Core如何映射动态模型?

    [导读]本文我们来探讨下映射动态模型的几种方式,相信一部分童鞋项目有这样的需求,比如每天/每小时等生成一张表,此种动态模型映射非常常见,经我摸索,这里给出每一步详细思路,希望能帮助到没有任何头绪的童鞋 ...

  5. EntityFramework Core不得不注意的性能优化意外收获,你会用错?

    前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测,于是想着利用放假时间去实际测试下,结果本文就出来了,too young,too simple,后续博主会从底层翻译表达式树弄起, ...

  6. EntityFramework Core解决并发详解

    前言 对过年已经无感,不过还是有很多闲暇时间来学学东西和多陪陪爸妈,这一点是极好的,好了,本节我们来讲讲EntityFramework Core中的并发问题. 话题(EntityFramework C ...

  7. EntityFramework Core查询数据基本本质

    [导读]在EntityFramework Core中.当查询出数据后,是如何将数据映射给实体的呢?本节我们预先做个基本探讨,后续给出其底层原理本质 前不久,我们在探索性能时,给出利用反射达到性能瓶颈时 ...

  8. EntityFramework Core 3.x上下文构造函数可以注入实例呢?

    今天讨论的话题来自一位微信好友遇到问题后请求我的帮助,当然他的意图并不是本文标题,只是我将其根本原因进行了一个概括,接下来我们一起来探索标题的问号最终的答案是怎样的呢?老规矩,首先我们定义如下上下文 ...

  9. EntityFramework Core 3.x添加查询提示(NOLOCK)

    前几天看到有博客园中有园友写了一篇关于添加NOLOCK查询提示的博文,这里呢,我将介绍另外一种添加查询提示的方法,此方式源于我看过源码后的实现,孰好孰歹,请自行判之,接下来我们一起来看看. 在Enti ...

最新文章

  1. R语言:cbind()和rbind()
  2. cf1562E. Rescue Niwen!
  3. 2019CCPC网络预选赛 八道签到题题解
  4. Intellij idea添加单元测试工具
  5. RTT的线程同步篇——互斥量
  6. ASCII,Unicode和UTF-8之间的关系终于明白了
  7. 小议使用“完整”的CSS的缺点
  8. linux 安装tuxedo
  9. CI框架实现框架前后端分离的方法详解:把前端代码统一管理
  10. Java Stream 实现根据多字段分组求和
  11. C语言中的int类型
  12. asp毕业设计——基于asp+access的会员管理系统设计与实现(毕业论文+程序源码)——会员管理系统
  13. 剪切caspase3_Caspase-3活性检测
  14. python实现一元三次方程求根-二分法
  15. Cannot execute request on any known server或DiscoveryClient_UNKNOWN/DESKTOP-MQ8D0C9:8761
  16. Scrum立会报告+燃尽图(Beta阶段第五次)
  17. c语言中循环并列语句顺序,C语言第五讲,语句 顺序循环选择.
  18. Oracle和MySQL不同编码格式下varchar所能存储的中文数量
  19. CS_2023_01
  20. 人生思考--碌碌无为的一天

热门文章

  1. wxPython 笔记(3)基本结构
  2. matlab编程小结
  3. windows编程,服务器与客户端
  4. 13条注释 tips
  5. 华为荣耀畅玩7c计算机在那,华为荣耀畅玩7C
  6. Java JVM内存模型
  7. Installation error: INSTALL_FAILED_CONTAINER_ERROR
  8. mysql memory_MySQL MEMORY 引擎及性能比对
  9. ps2020的antlib文件在哪_ant design pro 新增页面
  10. python爬快手个人介绍个性_快手个性个人介绍句子签名 快手自己介绍模板句子...