1

我有一个使用 Angular 7 和 ASP.net Core 2.2 构建的网站。我制作了标准的“EmailConfirmed”、“ResetPasswordRequest”和“ResetPasswordConfirmed”功能。所有这些都在 app.route.ts 中定义了它们的路由,如下所示:

{ path: 'email-confirmed', component: AccountEmailConfirmedComponent },
{ path: 'reset-password-request', component: AccountResetPasswordRequestComponent },
{ path: 'reset-password-confirmed', component: AccountResetPasswordConfirmedComponent }

现在在服务器端,我必须发送一封带有适当模板和链接的电子邮件。

我制作的代码运行良好,但回调 URL 必须与角度路由相对应,而这里不是这种情况。

我想知道为这种情况构建回调 url 的最佳方式

    public async Task<IActionResult> ResetPasswordRequest(string email)
    {
         var user = await _userService._manager.FindByNameAsync(email);
         if (user != null && await _userService._manager.IsEmailConfirmedAsync(user))
            {
               string token = await _userService._manager.GeneratePasswordResetTokenAsync(user);
               // build from angular route dynamically....
               string angularCallbackUrl = "https://localhost:44350/reset-password-confirmed";

string callbackUrl = this._urlHelper.Action("ResetPassword", "Account", new ConfirmTokenModel(user.Id, token), protocol: this.HttpContext.Request.Scheme);

                        await this._emailService.SendAsync(
                            to: user.Email,
                            subject: "Reset password",
                            body: "Reset your password by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");

                        return new OkObjectResult("success");
                    }

                    return new ObjectResult("failed") { StatusCode = 403 };
                }
4

1 回答 1

0

我建议要么构建一个您的 3 个路由组件可以访问的 http 服务,或者使用 1 个与所有 3 个路由共享的组件。您将使用 http 函数调用向后端服务器发送请求。然后,该 http 函数调用将期望得到响应,我假设您随后希望将该响应用于指定的路由。这些路由组件将需要访问服务器返回的响应,因此要么将 http 函数调用放在所有 3 个路由组件都可以访问的服务中,要么将 http 函数调用放在所有 3 个路由使用的 1 个组件中.

于 2019-04-02T03:13:52.393 回答