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

时间:2017-12-23 01:13:58

标签: asp.net angularjs asp.net-mvc asp.net-mvc-4

My 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>");
}

有没有办法让callbackUrl指向localhost:4200 / userId / EmailConfirmation? 我现在刚刚对链接进行了硬编码,但我不确定这是不是很糟糕?

(硬编码链接:)

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

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

1 个答案:

答案 0 :(得分:1)

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

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