【发布时间】:2022-11-13 16:05:49
【问题描述】:
我正在将我在 Express.js 上编写的现有项目移动到 Nest.js,最紧迫的问题之一是提供静态 html 页面以更改用户密码。我这几天一直在寻找任何答案,但没有成功。我在 Express.js 上的实现完美运行,这里是:
resetPass.use(express.static(__dirname + "/reset_pass_page"));
resetPass.get("/:id", async (req, res) => {
try {
// here I check ID which is JWT and if everything is OK I send the form:
res.status(200).sendFile(__dirname + "/reset_pass_page/index.html");
}
现在我正在尝试使用 Nest.js 达到相同的结果。我有一个用于重置密码和发送用户电子邮件链接的模块。这是控制器:
@Controller('users/resetpass')
export class ResetPassController {
constructor(private readonly resetPassService: ResetPassService) { }
// here is others routes for getting reset link on user's email and etc...
// in this part I'm sending the form:
@Get("requestform/:id")
sendResetPasswordForm(@Param("id") resetToken: string) {
return this.resetPassService.sendResetPasswordForm(resetToken)
}
}
在我的情况下,我应该在服务中做什么?
async sendResetPasswordForm(resetToken: string) {
try {
// checking resetToken and if it's OK send form like:
res.sendFile(__dirname + "/reset_pass_page/index.html");
What method should i use in that case?
}
}
我已经尝试在我的重置通道模型中使用 ServeStaticModule,但我无法使其与动态路由一起正常工作。我试过这个配置:
ServeStaticModule.forRoot({
rootPath: join(__dirname, '../../../static/resetpass'),
renderPath: /(\/users\/resetpass\/requestform\/)([\w-]*\.[\w-]*\.[\w-]*)/g,
}),
我可以让它适用于没有 ID 的路线,比如用户/重置密码/,但我需要这些页面仅适用于类似的路线用户/resetpass/:id.
我期待着任何帮助和建议。谢谢!
【问题讨论】: