mvc core2.1 Identity.EntityFramework Core 注册 (二)
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 注册 (二)相关推荐
- mvc core2.1 Identity.EntityFramework Core 导航状态栏(六)
之前做的无法 登录退出,和状态,加入主页导航栏 Views ->Shared->_Layout.cshtml <div class="navbar-collapse col ...
- ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...
- asp.net mvc 5 identity 2.0 注册时密码强度验证
asp.net mvc 5 identity 2.0 注册时密码强度验证 密码强度验证分两部分,一部分是客户端,即浏览器中进行验证,另一部分是 identity 的 UserManager 中进行的. ...
- EntityFramework Core如何映射动态模型?
[导读]本文我们来探讨下映射动态模型的几种方式,相信一部分童鞋项目有这样的需求,比如每天/每小时等生成一张表,此种动态模型映射非常常见,经我摸索,这里给出每一步详细思路,希望能帮助到没有任何头绪的童鞋 ...
- EntityFramework Core不得不注意的性能优化意外收获,你会用错?
前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测,于是想着利用放假时间去实际测试下,结果本文就出来了,too young,too simple,后续博主会从底层翻译表达式树弄起, ...
- EntityFramework Core解决并发详解
前言 对过年已经无感,不过还是有很多闲暇时间来学学东西和多陪陪爸妈,这一点是极好的,好了,本节我们来讲讲EntityFramework Core中的并发问题. 话题(EntityFramework C ...
- EntityFramework Core查询数据基本本质
[导读]在EntityFramework Core中.当查询出数据后,是如何将数据映射给实体的呢?本节我们预先做个基本探讨,后续给出其底层原理本质 前不久,我们在探索性能时,给出利用反射达到性能瓶颈时 ...
- EntityFramework Core 3.x上下文构造函数可以注入实例呢?
今天讨论的话题来自一位微信好友遇到问题后请求我的帮助,当然他的意图并不是本文标题,只是我将其根本原因进行了一个概括,接下来我们一起来探索标题的问号最终的答案是怎样的呢?老规矩,首先我们定义如下上下文 ...
- EntityFramework Core 3.x添加查询提示(NOLOCK)
前几天看到有博客园中有园友写了一篇关于添加NOLOCK查询提示的博文,这里呢,我将介绍另外一种添加查询提示的方法,此方式源于我看过源码后的实现,孰好孰歹,请自行判之,接下来我们一起来看看. 在Enti ...
最新文章
- R语言:cbind()和rbind()
- cf1562E. Rescue Niwen!
- 2019CCPC网络预选赛 八道签到题题解
- Intellij idea添加单元测试工具
- RTT的线程同步篇——互斥量
- ASCII,Unicode和UTF-8之间的关系终于明白了
- 小议使用“完整”的CSS的缺点
- linux 安装tuxedo
- CI框架实现框架前后端分离的方法详解:把前端代码统一管理
- Java Stream 实现根据多字段分组求和
- C语言中的int类型
- asp毕业设计——基于asp+access的会员管理系统设计与实现(毕业论文+程序源码)——会员管理系统
- 剪切caspase3_Caspase-3活性检测
- python实现一元三次方程求根-二分法
- Cannot execute request on any known server或DiscoveryClient_UNKNOWN/DESKTOP-MQ8D0C9:8761
- Scrum立会报告+燃尽图(Beta阶段第五次)
- c语言中循环并列语句顺序,C语言第五讲,语句 顺序循环选择.
- Oracle和MySQL不同编码格式下varchar所能存储的中文数量
- CS_2023_01
- 人生思考--碌碌无为的一天
热门文章
- wxPython 笔记(3)基本结构
- matlab编程小结
- windows编程,服务器与客户端
- 13条注释 tips
- 华为荣耀畅玩7c计算机在那,华为荣耀畅玩7C
- Java JVM内存模型
- Installation error: INSTALL_FAILED_CONTAINER_ERROR
- mysql memory_MySQL MEMORY 引擎及性能比对
- ps2020的antlib文件在哪_ant design pro 新增页面
- python爬快手个人介绍个性_快手个性个人介绍句子签名 快手自己介绍模板句子...