我想为新用户设置一封确认电子邮件。
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return RedirectToAction(nameof(HomeController.Index), "Home");
}
var user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
throw new ApplicationException($"Unable to load user with ID '{userId}'.");
}
var result = await _userManager.ConfirmEmailAsync(user, code);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
所以当调试时,单击链接时,userId是可以的,但“code”输入参数为空,所以
if (userId == null || code == null)
是真的,然后执行
return RedirectToAction(nameof(HomeController.Index), "Home");
发送给注册用户的电子邮件如下所示:
请单击此链接确认您的帐户:https://localhost:44314/Account/ConfirmEmail?userId=3ec7ac6a-3329-4821-a09b-aa4843598eaa
编辑:链接包含
实际上,没有人在互联网上有同样的问题,所以我在这里迷路了。我做错了什么?
public static class UrlHelperExtensions
{
public static string EmailConfirmationLink(this IUrlHelper urlHelper, string userId, string code, string scheme)
{
return urlHelper.Action(
action: nameof(AccountController.ConfirmEmail),
controller: "Account",
values: new { userId, code },
protocol: scheme);
}
public static string ResetPasswordCallbackLink(this IUrlHelper urlHelper, string userId, string code, string scheme)
{
return urlHelper.Action(
action: nameof(AccountController.ResetPassword),
controller: "Account",
values: new { userId, code },
protocol: scheme);
}
}
更新:当我改变
如上所述,该代码:
HtmlEncoder.Default.Encode(link)
是错误的。我们不是在这里编码HTML。我们正在编码一个url。因此,有人会认为,我们应该使用url编码。这:
HttpUtility.UrlEncode(link);
但是,似乎Url。页面足够聪明,可以自动对参数进行编码。试试下面的代码:
var callbackUrl = Url.Page(
"/Account/ConfirmEmail",
pageHandler: null,
values: new { area = "Identity", userId = "12345", code =
"567&9", returnUrl = "/index" },
protocol: Request.Scheme);
结果是这样的:
https://localhost:44383/Identity/Account/ConfirmEmail?userId=12345&code=567%269&returnUrl=%2Findex
正如您所见,“code”参数中的符号和正在被编码。因此编码是不必要的,琼斯的回答是正确的。
public static Task SendEmailConfirmationAsync(this IEmailSender emailSender, string email, string link)
{
return emailSender.SendEmailAsync(email, "Confirm your email",
$"Please confirm your account by clicking this link: <a href='{HtmlEncoder.Default.Encode(link)}'>link</a>");
}
问题就在这里
HtmlEncoder.Default.Encode(link)
只要把它移开就行了
<a href='{link}'>link</a>
此API适用于移动应用程序。目标是让用户在注册时确认电子邮件。当用户注册时,会生成一个确认链接并通过电子邮件发送。我在MVC项目中也采用了同样的方法,效果很好,但在Web API项目中,它似乎无法实现。现在,当用户单击该链接时,应该点击相应的动作方法并完成任务。 唯一的问题是,ConfirmEmail操作方法在单击确认链接时没有被触发,尽管它看起来很好。 以下是可能有帮助的主要配置 MVC服务配置
我已经建立了一个ASP。具有身份的NET Core 5 web应用程序。一切正常。唯一的问题是,当新用户在他们的电子邮件确认中点击链接后,网站上显示的消息是“确认电子邮件”。确认有效,但消息让用户感到困惑。 发送到的地址是: https://Baseurl/身份/帐户/确认Email? userId=******** Identity/Account文件夹中的任何文件都不包含显示的邮件。是否可以更
我使用的是firebase javascript API。 也不起作用
我使用的是aspnet core托管的blazor wasm项目类型。我正试图通过发送给用户的电子邮件链接确认用户帐户。 正在生成并发送电子邮件。生成的确认链接为:https://localhost:5001/accountconfirmation?code=CfDJ8L2gJclnoq5BioPxBNdLc8wCyaMHcitemYm7I8XKkeyM vauvFOj0HN1meMs6JusAI
我正在使用spring Boot从java发送HTML电子邮件。电子邮件包括签名与我们公司的形象标志。它工作得很好。在Gmail上。但在MacOS应用程序电子邮件中,徽标是作为附件发送的,而不是内联的。 代码的非相关部分替换为...
主要内容:创建用户,登录,注销在本章中,我们将向您介绍如何使用Firebase电子邮件/密码身份验证。在开始之前,需要设置登录方法,参考以下图所示 - 点击设置登录方法,然后选择电子邮件地址/密码,打开启用并保存,如下图所示 - 创建用户 要验证用户,可以使用方法。 示例 让我们来看看下面的一个例子。参考代码 - 接下来,您可以检查Firebase仪表板中的数据库,并查看用户是否已创建成功。如下所示,已经创建了一个用户账号 -