重置密码身份服务器

Posted

技术标签:

【中文标题】重置密码身份服务器【英文标题】:Reset password identity server 【发布时间】:2022-01-11 14:31:30 【问题描述】:

我希望使用托管的 ASP.NET Core 在我的 blazor 应用程序中实现密码重置选项。我已经完成了给我Areas/Identity/Pages/Account/.... 的脚手架,我正在寻找一个带有可以更改存储在 AspNetUsers 表中的用户的密码和电子邮件的表单的页面。许多文档使用 SendGrid 进行电子邮件重置,但是我不想使用电子邮件重置,而是我想制作自己的剃须刀页面,我可以在其中显示用于密码/电子邮件重置的表单。如何重置存储在 AspNetUsers 表中的现有用户电子邮件/密码?我不确定是否需要使用ResetPasswordModel,如果需要,我将如何实现它。对此有任何见解。提前致谢。

我尝试为ResetPassword.cshtml 页面提供访问重置表单的路径,但这产生了一个显示A code must be supplied for password reset. 的页面,我认为这是不正确的方法

@page "/resetpassword"
@model ResetPasswordModel
@
    ViewData["Title"] = "Reset password";


<h1>@ViewData["Title"]</h1>
<h4>Reset your password.</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form method="post">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input asp-for="Input.Code" type="hidden" />
            <div class="form-group">
                <label asp-for="Input.Email"></label>
                <input asp-for="Input.Email" class="form-control" />
                <span asp-validation-for="Input.Email" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Input.Password"></label>
                <input asp-for="Input.Password" class="form-control" />
                <span asp-validation-for="Input.Password" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Input.ConfirmPassword"></label>
                <input asp-for="Input.ConfirmPassword" class="form-control" />
                <span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
            </div>
            <button type="submit" class="btn btn-primary">Reset</button>
        </form>
    </div>
</div>

@section Scripts 
    <partial name="_ValidationScriptsPartial" />

【问题讨论】:

您自己定制了密码重置页面吗? 【参考方案1】:

对于此密码重置逻辑,您应该通过电子邮件向用户发送一个链接,其中包含使用UserManager.GeneratePasswordResetTokenAsync(TUser) 生成的代码。

确实,任何人都可以访问您的重置密码页面,令牌应该确保只有通过电子邮件收到链接的用户才能重置密码。

【讨论】:

以上是关于重置密码身份服务器的主要内容,如果未能解决你的问题,请参考以下文章

重置密码时出错

mysql忘记密码后重置密码的方法(mysql 8.0.25重置密码)

具有社交媒体身份验证的用户的 Firebase 重置密码问题

无需输入电子邮件即可重置密码(ASP.NET 身份)

使用 ASP.NET 身份重置密码时令牌无效

通过Gitlab API更改密码时,在登录时禁用密码重置