当前位置: 首页 > news >正文

洛阳电商网站建设丰田车营销网站建设的纲要计划书

洛阳电商网站建设,丰田车营销网站建设的纲要计划书,域名备案审核需要多久,工具seo这是 ASP.NET Core Identity 系列的第四篇文章#xff0c;上一篇文章讲解了如何在 ASP.NET Core Identity 中实现用户登录与登出。这篇文章讲一讲如何在 ASP.NET Core Identity 中通过邮件服务实现用户账号的密码重置。点击上方或后方蓝字#xff0c;阅读 ASP.NET Core Ident… 这是 ASP.NET Core Identity 系列的第四篇文章上一篇文章讲解了如何在 ASP.NET Core Identity 中实现用户登录与登出。这篇文章讲一讲如何在 ASP.NET Core Identity 中通过邮件服务实现用户账号的密码重置。点击上方或后方蓝字阅读 ASP.NET Core Identity 系列合集。本篇文章的示例项目https://github.com/zilor-net/IdentitySample/tree/main/Sample04密码重置用户管理中最常见的功能就是密码重置。密码重置过程不应该涉及系统管理员因为用户本身应该能够独立完成整个过程。通常登录页面上都会为用户提供忘记密码的链接以用来重置密码这就是我们接下来要实现的功能。简单地解释一下密码重置过程用户单击忘记密码链接然后跳转到带有电子邮件字段的页面。用户填写该字段后应用程序会向该电子邮件发送密码重置的连接。用户通过单击电子邮件的密码重置链接此时会使用密码重置令牌重定向到密码重置页面。用户填充表单中的所有字段后应用程序将重置密码用户再被重定向到登录页面或主页。邮件服务示例项目中已经集成了邮件服务 「EmailService」 以用来帮助我们发送邮件具体的邮件发送的实现不是这个系列的主题就不做过多的阐述。大家可以自己查看示例中「EmailService」项目中关于邮件发送的代码。邮件服务通过扩展方法注册到了依赖注入框架中其具体配置在 「appsettings.json」 中。忘记密码首先我们需要创建 「忘记密码」 的视图。在 「Models」 文件夹中创建一个 「ForgotPasswordModel」 类public class ForgotPasswordModel {[Display(Name  电子邮箱)][Required(ErrorMessage  电子邮箱不能为空)][EmailAddress(ErrorMessage  电子邮箱格式不正确)]public string Email { get; set; } }它会用在「忘记密码」视图中这里我们只需要获取用户的电子邮件所以这里只有一个 「Email」 属性。接下来在 「Account」 控制器中创建两个操作方法[HttpGet] public IActionResult ForgotPassword() {return View(); }[HttpPost] [ValidateAntiForgeryToken] public async TaskIActionResult ForgotPassword(ForgotPasswordModel forgotPasswordModel) {return View(forgotPasswordModel); }public IActionResult ForgotPasswordConfirmation() {return View(); }这个套路我们已经很熟悉了第一个 「ForgotPassword」 只是为了创建视图第二个 「ForgotPassword」 是为了实现逻辑「ForgotPasswordConfirmation」 则是返回确认视图。接下来再依次创建相关的视图h1ForgotPasswordConfirmation/h1p重置密码的链接已经发送到您的电子邮箱 /p然后在 「Login」 视图中添加忘记密码的链接div classform-groupa asp-actionForgotPassword忘记密码/a /div现在让我们来实现忘记密码的逻辑[HttpPost] [ValidateAntiForgeryToken] public async TaskIActionResult ForgotPassword([FromServices]IEmailSender emailSender, ForgotPasswordModel forgotPasswordModel) {if (!ModelState.IsValid)return View(forgotPasswordModel);var user  await _userManager.FindByEmailAsync(forgotPasswordModel.Email);if (user  null)return RedirectToAction(nameof(ForgotPasswordConfirmation));var token  await _userManager.GeneratePasswordResetTokenAsync(user);var callback  Url.Action(nameof(ResetPassword), Account, new { token, email  user.Email }, Request.Scheme);var message  new Message(new string[] { user.Email }, 重置密码, callback, null);await emailSender.SendEmailAsync(message);return RedirectToAction(nameof(ForgotPasswordConfirmation)); }如果模型有效就通过用户的电子邮件从数据库中获取用户。如果不存在只需将该用户重定向到邮件已发送的确认页面而不是创建用户不存在的消息。这么做主要是出于安全考虑以防止有人利用这个功能验证用户名的有效性。如果用户存在就通过 「GeneratePasswordResetTokenAsync」 方法生成一个令牌并创建一个回调链接到我们将用于重置密码逻辑的操作。最后我们向用户提供的电子邮件发送邮件消息并将用户重定向到确认页面。现在程序还无法创建令牌因为我们还没有注册令牌服务这需要在注册 「Identity」 方法时进行注册builder.Services.AddIdentityUser, IdentityRole().AddEntityFrameworkStoresApplicationContext().AddDefaultTokenProviders();如果我们希望密码重置令牌只在有限的时间内有效例如: 2小时那我们还需要配置令牌生存期builder.Services.ConfigureDataProtectionTokenProviderOptions(opt opt.TokenLifespan  TimeSpan.FromHours(2));重置密码接着我们来实现 「ResetPassword」 重置密码的操作方法创建一个 「ResetPasswordModel」 类public class ResetPasswordModel {[Display(Name  密码)][Required(ErrorMessage  密码不能为空)][DataType(DataType.Password)]public string Password { get; set; }[Display(Name  确认密码)][DataType(DataType.Password)][Compare(Password, ErrorMessage  密码与确认密码不匹配。)]public string ConfirmPassword { get; set; }public string Email { get; set; }public string Token { get; set; } }然后在 「Account」 控制器中创建 「ResetPassword」 操作方法[HttpGet] public IActionResult ResetPassword(string token, string email) {var model  new ResetPasswordModel { Token  token, Email  email };return View(model); }[HttpPost] [ValidateAntiForgeryToken] public async TaskIActionResult ResetPassword(ResetPasswordModel resetPasswordModel) {return View(); }[HttpGet] public IActionResult ResetPasswordConfirmation() {return View(); }这里与 「ForgotPassword」 操作类似。「HttpGet」ResetPassword操作会接受来自电子邮件中密码重置连接的请求提取令牌和电子邮件并创建一个视图。「HttpPost」ResetPassword操作是处理重置密码的逻辑。ResetPasswordConfirmation只是一个密码重置的确认视图。依次创建这些视图需要注意的是我们需要把 「Email」 和 「Token」 两个字段隐藏起来因为这两个值由应用提供不需要用户设置input typehidden asp-forEmail classform-control / input typehidden asp-forToken classform-control /「ResetPasswordConfirmation」 视图h1ResetPasswordConfirmation/h1 p您的密码已经重置. 请点击这里 a asp-actionLogin 登录 /a /p最后再来修改 「POST」ResetPassword 操作方法[HttpPost] [ValidateAntiForgeryToken] public async TaskIActionResult ResetPassword(ResetPasswordModel resetPasswordModel) {if (!ModelState.IsValid)return View(resetPasswordModel);var user  await _userManager.FindByEmailAsync(resetPasswordModel.Email);if (user  null)RedirectToAction(nameof(ResetPasswordConfirmation));var resetPassResult  await _userManager.ResetPasswordAsync(user, resetPasswordModel.Token, resetPasswordModel.Password);if(!resetPassResult.Succeeded){foreach (var error in resetPassResult.Errors){ModelState.TryAddModelError(error.Code, error.Description);}return View();}return RedirectToAction(nameof(ResetPasswordConfirmation)); }首先检查模型的有效性以及用户是否存在于数据库中。之后使用 「ResetPasswordAsync」 方法执行密码重置操作。如果操作失败就向模型状态添加错误并返回视图。否则我们将用户重定向到确认页面。需要注意的是如果想要测试最终效果邮件服务的配置以及用户的邮件地址都必须是真实有效的。小结现在我们已经实现了用户通过电子邮件重置密码的功能下篇文章将会讲解如何在用户注册时必须确认电子邮件是否有效的功能。更多精彩内容请关注我▼▼如果喜欢我的文章那么在看和转发是对我最大的支持戳下面蓝字阅读ASP.NET 6 中间件系列ASP.NET 6 最通俗易懂的依赖注入系列‍ASP.NET 6 身份认证框架 Identity 系列查缺补漏系统学习 EF Core 6  系列老子不亏是程序员的祖师爷不得不知的超精简 HTTP 协议推荐关注微信公众号码侠江湖                        觉得不错点个在看再走哟
http://www.huolong8.cn/news/158930/

相关文章:

  • 顺义电大网上作业在那个网站做专业网站优化方案
  • 建设一个企业网站一般多少钱龙港哪里有做阿里巴巴网站
  • 建设一个门户网站 费用网站建设基本范例
  • 个人做理财网站好wordpress图片购买下载
  • 长沙设计网站建设工商局网上注册公司
  • 检察院门户网站建设自查报告青岛做网站那家好
  • c 做的网站怎么上传家居设计网站推荐
  • 广西建设厅网站行业网电子商务网站开发开发背景
  • 医疗网站建设好么产品50个关键词
  • 营销型网站制作费用网站多个页面要加引导
  • 临安网站设计淡水做网站
  • 网站能看出建设时间吗装修公司网站设计
  • 电子商务网站建设与维护期末考试百度联盟官网
  • 东莞淘宝网站建设沧州网络推广公司
  • 白色网站源码网络运营商自动选择
  • 关于美食网站的问卷调查怎么做网站模板选择
  • 长春市城建网站wordpress 照片博客
  • 建设功能网站价格苏州网站推广哪家好
  • 如何网站做百度推广高端论坛网站建设
  • 网站搭建系统wordpress网站上线
  • 龙岗商城网站建设教程网站备案对网站负责人的要求
  • 网站建站网站咸阳网站建设推广
  • 专业论坛网站有哪些设计培训学院
  • 建设茶叶网站目的南宁网站建设公司seo优化
  • WordPress全站跳转开发网站监控平台
  • 网龙公司有做网站吗镇雄县城乡建设局网站
  • 博湖网站建设南京产品网站建设收费
  • wordpress 建站案例怎样更新网站文章
  • 湖南省建设安监局官网站重庆建设摩托车股份有限公司
  • wordpress增加板块郑州企业网站优化