在 asp.net 核心 api 中创建回调 url
create callback url in asp.net core api
我尝试在 asp.net 核心 API 中使用 Identity,一切正常,除了我找不到创建回调 url 以进行电子邮件确认的方法。
我搜索了很多,但没有人在 ASP.NET 核心 API.
中实现带有电子邮件确认的身份
这是我的 RegisterUser
代码:
var user = new ApplicationUser
{
Name = model.Name,
Email = model.Email,
UserName = model.Email
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _userManager.AddToRoleAsync(user, "User");
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
var callbackurl = Url.RouteUrl("ConfirmEmail", new { userId = user.Id, token = token }, protocol: Request.Scheme);
var message = new Message(
new string[] { model.Email },
Messages.Email_Confirmation,
Messages.Email_CreateUser_Body + "<a href=\"" + callbackurl + "\">link</a>"
);
_emailSender.SendEmail(message);
return Ok();
}
以上代码'callbackurl'return无效。我尝试了其他创建 url 的方法,但它不起作用。
在此先感谢您的帮助
我找到了根本原因,是因为你缺少路由配置。
在 .net6 中,program.cs
...
app.MapControllers();
// add this code
app.MapControllerRoute(
name: "ConfirmEmail",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
这只是我的测试代码,我在本地重现了这个问题,我也遇到了这个问题,添加app.MapControllerRoute
后就可以了。
我尝试在 asp.net 核心 API 中使用 Identity,一切正常,除了我找不到创建回调 url 以进行电子邮件确认的方法。 我搜索了很多,但没有人在 ASP.NET 核心 API.
中实现带有电子邮件确认的身份这是我的 RegisterUser
代码:
var user = new ApplicationUser
{
Name = model.Name,
Email = model.Email,
UserName = model.Email
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _userManager.AddToRoleAsync(user, "User");
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
var callbackurl = Url.RouteUrl("ConfirmEmail", new { userId = user.Id, token = token }, protocol: Request.Scheme);
var message = new Message(
new string[] { model.Email },
Messages.Email_Confirmation,
Messages.Email_CreateUser_Body + "<a href=\"" + callbackurl + "\">link</a>"
);
_emailSender.SendEmail(message);
return Ok();
}
以上代码'callbackurl'return无效。我尝试了其他创建 url 的方法,但它不起作用。
在此先感谢您的帮助
我找到了根本原因,是因为你缺少路由配置。
在 .net6 中,program.cs
...
app.MapControllers();
// add this code
app.MapControllerRoute(
name: "ConfirmEmail",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
这只是我的测试代码,我在本地重现了这个问题,我也遇到了这个问题,添加app.MapControllerRoute
后就可以了。