我正在尝试在我的应用程序中使用asp.net Identity来实现用户邀请,用户需要由管理员邀请,而不是自己开始注册。因此,在邀请过程中,我创建了一个没有密码的用户,添加了正确的角色,并使用GenerateUserTokenAsync发送了一封电子邮件。到现在为止还挺好。 (欢迎您提出建议)
我担心的是: 用户单击通过电子邮件收到的链接后,将转到我创建的视图,但我想知道重新使用身份页面之一(例如确认电子邮件注册)还是注册本身会更好
有什么想法吗?
答案 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();
}
}