Hy,
我是blazor和.net的新手,我想知道如何才能以最佳方式实施密码重置。目前,我正在使用此示例登录等:Blazor Authentication Sample。此示例不包括重置密码的示例。因此,我自己正在寻找解决方案。
这是有的,它是剃刀组件
@page "/ResetPassword"
@inject UserManager<IdentityUser> userManager
@inject NavigationManager navigationManager
@inject IDataProtectionProvider dataProtectionProvider
@if (IsResetSend)
{
<h3>Reset Password</h3>
<div>
A mail has been send with a password reset link, please click this link to set a new password.
</div>
<br />
<a href="/">Back</a>
}
else
{
<h3>Reset Password</h3>
<EditForm Model="resetPassword" OnValidSubmit="@SendResetPassword">
<div class="field">
<label class="label">E-mail</label>
<div class="control">
<InputText id="email" class="input" type="email" @bind-Value="@resetPassword.Email"></InputText>
</div>
</div>
<div class="field">
<div class="control">
<button type="submit" class="button is-primary">Sign in</button>
</div>
</div>
</EditForm>
}
@code {
ResetPassword resetPassword = new ResetPassword();
bool IsResetSend = false;
public async void SendResetPassword()
{
List<string> mailTo = new List<string>();
string passwordResetToken;
var user = await userManager.FindByEmailAsync(resetPassword.Email);
if (user != null)
{
mailTo.Add(resetPassword.Email);
passwordResetToken = await userManager.GeneratePasswordResetTokenAsync(user);
//Send mail with the relevant token
Webco.Email.Entities.EmailObject emailObject = new Webco.Email.Entities.EmailObject();
emailObject.Email_To = mailTo;
emailObject.Email_Subject = "Password Reset Webco !";
emailObject.Email_Message = "Hy There, <br> Please click this link to reset your password : <br> https://localhost:44384/" + passwordResetToken;
emailObject.SendEmail(emailObject);
IsResetSend = true;
}
}
public class ResetPassword
{
[Required]
public string Email { get; set; }
}
如您所见,这是一种简单的方法,目前我似乎找不到的一件事是一种存储密码重置令牌的方法,并在邮件中单击它时将其捕获。
在我愿意之前]]
我不认为这是基于自定义存储过程的最佳实践。有人可以指导我吗?
问候,
嘿,我是blazor和.net的新手,我想知道如何才能以最佳方式实施密码重置。目前,我正在使用此示例登录等:Blazor身份验证示例。这个...
Blazor已包含所有必需的示例。创建一个新项目,然后选择作为身份验证的应用内存储。在项目上用鼠标右键单击,然后选择添加->新建脚手架元素,然后在右侧选择标识。 Visual Studio将询问您要覆盖哪些文件,并创建一个完整的示例,您可以使用该示例在主应用程序中对其进行构建。