如何在没有硬编码的情况下将ASP.NET MVC Url.Action指向Angular路由?

问题描述 投票:0回答:1

我的Angular(ng app)前端在localhost:4200上运行 我的MVC后端运行在localhost:5000上

我正在配置电子邮件确认。 电子邮件到了,但现在我希望该电子邮件中的链接指向我的前端,以便我可以相应地处理确认。 目前,电子邮件(callbackUrl)中的链接为空,这是因为我指向代码中不存在的路由(这也使链接无法点击)。

private async Task SendEmailConfirmation(User user, CreateUserModel model)
{
  string token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
  var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = token }, protocol: HttpContext.Request.Scheme);

  await _emailSender.SendEmailAsync(model.Email, "Confirm your account", "Please confirm your e-mail by clicking this link: <a href=\"" + callbackUrl + "\">click here</a>");
}

有没有办法让回调Url指向localhost:4200 /用户ID /电子邮件确认?我现在刚刚对链接进行了硬编码,但我不确定这是否被认为是一种不好的做法?

(硬编码链接:)

  var callbackUrl = "http://localhost:4200/";

如有必要,我可以发布更多代码。

asp.net angularjs asp.net-mvc asp.net-mvc-4
1个回答
1
投票

更加用户友好的是将激活码发送到用户电子邮件并要求他以相同的注册表单输入,这将不再需要单独的页面进行确认,它将与用户相同正在确认他的手机#。

如果您必须按照当前的方式进行操作,那么您可以使用MVC视图来处理此页面,它将与Angular App完全分开。在您的电子邮件中,您将链接到MVC操作,该链接将检查用户是否提供了正确的激活码。用户看到页面后,在localhost:4200上提供指向角色应用程序的链接,其中将加载SPA

© www.soinside.com 2019 - 2024. All rights reserved.