asp网络验证网站源码分享?asp网络验证网站源码分享是什么

很多朋友对于asp网络验证网站源码分享和asp网络验证网站源码分享是什么不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

这节中我们主要讲解在ASP.NETCoreIdentity中如何启用电子邮件确认,ASP.NETCoreIdentity邮件确认是为了验证注册的用户是真人,而不是机器人,意味着注册的用户实际上是他们提供的电子邮件的所有者,Identity提供了在用户注册过程中启用电子邮件确认的选项

1、启用电子邮件确认通过设置IdentityOptions的属性RequireConfirmedEmail为true来启用电子邮件确认在Identity数据库中有一张AspNetUsers的表,这张表里有EmailConfirmed列,这一列来跟踪一个用户的Email是否确认如果已经确认,该值为true,否则为false。下面显示我们所有注册用户的EmailConfirmed为false

2、实现电子邮件确认

在用户注册过程中添加邮件确认,现在我们修改一下AdminController中的Create方法,使其包含邮件确认功能UserManager类的GenerateEmailConfirmationTokenAsync()方法为当前注册的用户生成一个email确认的token,接下来我们生成确认的url使用如下代码:

varconfirmationLink=Url.Action(“ConfirmEmail”,”Email”,new{token,email=user.Email},Request.Scheme).

链接地址将被发送到用户的邮箱,我们可以看到链接指向的是当前Controller类的ConfirmEmail方法,在查询字符串中添加了token和email参数,ConfirmEmail方法使用ASP.NETCore模型绑定能获取该值

3、指定邮件确认和验证

当用户点击他的邮件确认地址时,ASP.NETCoreIdentity会验证用户的邮件,因此我们需要创建一个ConfirmEmail来确认用户的邮件地址,当用户点击验证链接时,这个方法将被调用

publicclassEmailController:Controller{privateUserManager<AppUser>_userManager;publicEmailController(UserManager<AppUser>userManager){_userManager=userManager;}publicIActionResultIndex(){returnView();}publicasyncTask<IActionResult>ConfirmEmail(stringtoken,stringemail){varuser=await_userManager.FindByEmailAsync(email);if(user==){returnView(“Error”);}varresult=await_userManager.ConfirmEmailAsync(user,token);returnView(result.Succeeded?”ConfirmEmail”:”Error”);}}

我们在Views->Email文件夹下为这个Controller添加两个View:ConfirmEmail.cshtmlError.cshtml4、测试邮件确认然我们创建一个用户下面,我们检查一下邮箱:

我们打开这个邮件地址,会看到跳转到如下图:

我们在数据库中查看一下AspNetUsers表,我们发现EmailConfirmed列的值

5、修改登录方法

用户在没有确认Email连接的情况下是不能登录应用程序,如果登录了我们需要给出提示UserManager有一个方法IsEmailConfirmedAsync()是判断是否邮件已经确认。在用户登录期间我们通过这个方法提供信息给用户

[HttpPost][AllowAnonymous][ValidateAntiForgeryToken]publicasyncTask<IActionResult>Login(Loginlogin){if(ModelState.IsValid){varappUser=await_userManager.FindByEmailAsync(login.Email);if(appUser!=){await_signInManager.SignOutAsync();varsignInResult=await_signInManager.PasswordSignInAsync(appUser,login.Password,login.RememberMe,false);if(signInResult.Succeeded){returnRedirect(login.ReturnUrl??”/”);}varemailStatus=await_userManager.IsEmailConfirmedAsync(appUser);if(emailStatus==false){ModelState.AddModelError(nameof(login.Email),”Email为确认,请首先确认!”);}endregion}ModelState.AddModelError(nameof(login.Email),”LoginFailed:InvalidEmailorpassword”);}returnView(login);}

总结

在这节中我们主要讲解在ASP.NETCoreIdentity中电子邮件确认,下一篇我们将讲解在ASP.NETCoreIdentity中如何重置密码

源代码地址:

https://github.com/bingbing-gui/Asp.Net-Core-Skill/tree/master/AspNetCore.Identity/Identity

关于asp网络验证网站源码分享,asp网络验证网站源码分享是什么的介绍到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平