现在我正在使用 Payloadcms 创建我的 Web 应用程序。
你知道,它支持内置密码恢复,可以像这样使用:
forgotPassword: {
generateEmailHTML: async ({ req, token, user }: any) => {
const url = `${process.env.NEXT_PUBLIC_SERVER_URL}/auth/reset-password?token=${token}`
console.log('URL', url)
// return `Hey ${user.email}, reset your password by clicking here: ${url}`
const email = SendVerifyEmailTemplate({ email: user.email, url })
const ReactDOMServer = (await import('react-dom/server')).default
return ReactDOMServer.renderToString(email);
},
},
它工作正常,但我担心的是攻击者可以使用这个 api 进行电子邮件轰炸。
所以我想向这个端点添加一些验证。
但是这个内置服务没有验证选项,所以我想我应该自己创建一个端点。
因此我需要知道如何使用payloadcms模块的forgetPassword函数。
我可以像这样导入函数:
import { forgotPasswordOperation } from 'payload/operations';
如果您已经遇到过这个问题并解决了,我需要您的帮助。
我自己解决了。
const token = await payload.forgotPassword({
collection: 'users',
data: {
email: accountInfo.email,
},
disableEmail: true,
req: req
})
BasePayload 类型中有一个忘记密码的函数。 您可以选择启用/禁用电子邮件功能。