电子邮件邀请,使用asp.net身份进行完全注册

时间:2020-08-30 19:27:00

标签: asp.net-core asp.net-identity

我正在尝试在我的应用程序中使用asp.net Identity来实现用户邀请,用户需要由管理员邀请,而不是自己开始注册。因此,在邀请过程中,我创建了一个没有密码的用户,添加了正确的角色,并使用GenerateUserTokenAsync发送了一封电子邮件。到现在为止还挺好。 (欢迎您提出建议)

我担心的是: 用户单击通过电子邮件收到的链接后,将转到我创建的视图,但我想知道重新使用身份页面之一(例如确认电子邮件注册)还是注册本身会更好

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据您的描述,如果要重复使用“电子邮件确认”页面,可以尝试使用身份确认页面的剃须刀页面,如下所示。此外,我建议您尝试将用户重定向到更改密码页面以更改密码。

您需要使用两个querystring参数(用户ID和代码)生成电子邮件链接。更多详细信息,您可以参考以下代码:

[AllowAnonymous]
public class ConfirmEmailModel : PageModel
{
    private readonly UserManager<IdentityUser> _userManager;

    public ConfirmEmailModel(UserManager<IdentityUser> userManager)
    {
        _userManager = userManager;
    }

    [TempData]
    public string StatusMessage { get; set; }

    public async Task<IActionResult> OnGetAsync(string userId, string code)
    {
        if (userId == null || code == null)
        {
            return RedirectToPage("/Index");
        }

        var user = await _userManager.FindByIdAsync(userId);
        if (user == null)
        {
            return NotFound($"Unable to load user with ID '{userId}'.");
        }

        code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
        var result = await _userManager.ConfirmEmailAsync(user, code);
        StatusMessage = result.Succeeded ? "Thank you for confirming your email." : "Error confirming your email.";
        return Page();
    }
}