我的项目使用.NET Core(2.2)Angular Spa template。在此设置中,路由由“客户端” Angular(7)Web应用程序处理。
在没有与该路由/组件相关的控制器动作的情况下,如何生成将与密码重置电子邮件一起发送的密码重置表单的网址?
在一个经典的ASP.NET项目中,例如以Razor页面为例,我将使用UrlHelper class来构造指向特定控制器和动作的URL。确实,我仍然使用UrlHelper构造电子邮件确认消息的URL:
cli
这是可能的,因为有一个“确认电子邮件”操作:
var callbackUrl = new Uri(Url.Link("ConfirmEmail", new { username = newUser.UserName, code = code }));
密码重置的URL不同,因为对此没有控制器操作。该链接包含代码参数,并指向Angular组件。我找不到有关信息的地方是如何获取url的路由/基础,在开发中是 [HttpGet, Route("ConfirmEmail", Name = "ConfirmEmail")]
[AllowAnonymous]
public async Task<IActionResult> ConfirmEmail(string username, string code)
{
...
}
,但在生产中会有所不同:
http://localhost:55722
我可以创建一个用于创建url的'mock'操作,但这似乎太过分了。最好的方法是什么?
答案 0 :(得分:1)
如果您知道从何处提供Angular应用程序,请手动生成URL(也要知道Angular应用程序中的路由配置)。您还可以将角度应用程序的根URL保存在后端中,以帮助您创建最终URL。