我已经设法使用ASP. NET核心身份为我的项目设置了注册和登录。一切正常,但有一件小事真的困扰着我。
由于这是一个简单的项目,我不想通过向用户发送电子邮件来配置帐户确认,因此我使用默认模板,用户被重定向到帐户。RegisterConfirmation,他们可以选择一个链接来确认帐户,该链接将用户重定向到/Identity/account/ConfirmEmail,这是一个只有标题的空白页面。我不喜欢它。在选择一个链接以确认帐户后,我想将用户重定向到/account/Login。但是我应该在哪里设置呢?
到目前为止,我一直在尝试:添加
[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();
}
}
更改返回Page();
到返回ReDirectToPage("/帐户/登录");
导致无效操作异常:无法解析类型为“Microsoft”的服务。AspNetCore。身份。UserManager'1[Microsoft. AspNetCore。身份。身份用户]',同时尝试激活'项目。区域。身份。页面。帐户。确认电子邮件模型'。
确认电子邮件后,我在哪里设置返回url到/帐户/登录?
我还尝试了在注册表中不使用脚手架和覆盖帐户/确认邮件。cshtml。cs有
var callbackUrl = Url.Page(
"/Account/ConfirmEmail",
pageHandler: null,
values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
protocol: Request.Scheme);
我试着把returnUrl=returnUrl改为returnUrl=“~/Account/Login”,但没有成功。
****更新***
由于我不需要电子邮件确认这样一个简单的项目,我只是添加了这个
options.SignIn.RequireConfirmedAccount = false
到Startup类,因此需要帐户确认或电子邮件确认。
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = false)
.AddEntityFrameworkStores<ProjectContext>();
services.Configure<IdentityOptions>(options =>
{
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedAccount = false;
});
我使用默认模板,用户被重定向到帐户。注册确认
在配置身份服务的默认代码中,我们会发现RequireConfirmedAccount
选项设置为true
,如下所示。
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
我们可以发现,在类页面处理程序中创建用户帐户后,用户将被重定向到注册确认页面。
if (_userManager.Options.SignIn.RequireConfirmedAccount)
{
return RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl });
}
else
{
这是一个简单的项目我不想配置帐户确认
如果您不需要帐户确认,则在配置身份服务时无法设置SignInOptions的必需确认帐户属性(默认为false)。
services.AddDefaultIdentity<ApplicationUser>()
.AddEntityFrameworkStores<ProjectContext>();
或者像您所做的那样,显式设置登录设置。
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = false)
.AddEntityFrameworkStores<ProjectContext>();
此外,我们可以发现您调用了服务。AddDefaultIdity
我想为新用户设置一封确认电子邮件。 所以当调试时,单击链接时,userId是可以的,但“code”输入参数为空,所以 是真的,然后执行 发送给注册用户的电子邮件如下所示: 请单击此链接确认您的帐户:https://localhost:44314/Account/ConfirmEmail?userId=3ec7ac6a-3329-4821-a09b-aa4843598eaa 编辑:链接包含 实际上,
我使用的是firebase javascript API。 也不起作用
主要内容:使用 CDOSYS 发送电子邮件,CDONTs 怎么样?,使用 CDOSYS 的实例CDOSYS 是 ASP 中的内建组件。此组件用于通过 ASP 发送电子邮件。 使用 CDOSYS 发送电子邮件 CDO (Collaboration Data Objects) 是一项微软的技术,设计目的是用来简化通讯应用程序的创建。 CDOSYS 是 ASP 中的内建组件。我们将向您演示如何通过 ASP 使用该组件来发送电子邮件。 CDONTs 怎么样? 微软已经在 Windows 2000、
此API适用于移动应用程序。目标是让用户在注册时确认电子邮件。当用户注册时,会生成一个确认链接并通过电子邮件发送。我在MVC项目中也采用了同样的方法,效果很好,但在Web API项目中,它似乎无法实现。现在,当用户单击该链接时,应该点击相应的动作方法并完成任务。 唯一的问题是,ConfirmEmail操作方法在单击确认链接时没有被触发,尽管它看起来很好。 以下是可能有帮助的主要配置 MVC服务配置
我们刚刚启动了我们的ASP。NETMVC(使用Identity 2.0)web应用程序6天前已经有超过5000人注册了帐户,太棒了! 问题是3-5%点击确认电子邮件链接的用户(似乎也是重置密码)会出现错误屏幕,大概是因为他们有一个无效的令牌。 我在StackOverflow上读到,您需要对url进行编码,以避免特殊字符将其丢弃,然后在验证之前对其进行解码。不过,我这样做没有效果,一些用户仍然在他们
我已经建立了一个ASP。具有身份的NET Core 5 web应用程序。一切正常。唯一的问题是,当新用户在他们的电子邮件确认中点击链接后,网站上显示的消息是“确认电子邮件”。确认有效,但消息让用户感到困惑。 发送到的地址是: https://Baseurl/身份/帐户/确认Email? userId=******** Identity/Account文件夹中的任何文件都不包含显示的邮件。是否可以更