我在应用程序中使用流量帐户和帐户密码,并希望用户能够重置其密码。目前不需要对任何表单进行任何自定义,因此我使用了{{> atForm }}
的公共布局和/lib/config.js
的配置文件,其中包含以下内容:
AccountsTemplates.configure({
showForgotPasswordLink: true,
enablePasswordChange: true,
sendVerificationEmail: true,
enforceEmailVerification: true,
confirmPassword: true,
showResendVerificationEmailLink: true,
continuousValidation: true,
privacyUrl: 'privacy',
});
点击“重置密码”链接会生成以下网址:
http://localhost:3000/#/reset-password/hMny_A8tdOpNubxtk8mC3BE0vYSJm35K80B2hwwV1CR
然而,这些完全没用,因为它们重定向到应用程序的根URL,同时显然更改了密码;因此,用户在单击其中一个链接后无法登录。点击一个用户帐户后,用户帐户如下所示:
{ "_id" : "LcQSCiG7ib5F49tPN", "createdAt" : ISODate("2017-03-04T21:33:57.050Z"), "services" : { "password" : { "bcrypt" : "<redacted>", "reset" : { "token" : "l4HdPzoKkeIUdUeUC5x9NmUiQMnRsY1MRLvYk6Wvqw1", "email" : "<redacted>", "when" : ISODate("2017-03-04T21:51:32.171Z"), "reason" : "reset" } }, "email" : { "verificationTokens" : [ { "token" : "K88HXjzI2UO8vARZv6l6Qf0mUJ1hstInnrJK-8hayzk", "address" : "<redacted>", "when" : ISODate("2017-03-04T21:33:57.072Z") }, { "token" : "NMGLelAWKcCFglRj7aQvZoP85N-_YdWJZ2FcPWu5U8D", "address" : "<redacted>", "when" : ISODate("2017-03-04T21:52:55.930Z") } ] }, "resume" : { "loginTokens" : [ ] } }, "emails" : [ { "address" : "<redacted>", "verified" : false } ] }
其他所有工作(例如注册确认电子邮件)。我正在使用Blaze模板和流路由器,包括useraccounts:flow-routing。
我似乎在这里遗漏了一些东西,如果有人能够指出我正确的方向让这个工作,我会很感激。
答案 0 :(得分:1)
根据您的解释,我认为您缺少一些关键功能来实现这一目标。
首先,请记住useraccounts:flow-routing不提供开箱即用的路由。
默认情况下没有提供路由,但您可以使用AccountsTemplates.configureRoute轻松配置登录,注册,忘记密码,重置密码,更改密码,注册帐户的路由
鉴于该信息,您至少需要配置重置密码的默认路由。
最简单的方法是使呼叫只传入路由代码(可用的路由代码是:signIn,signUp,changePwd,forgotPwd,resetPwd,enrollAccount)。
这是一个例子。
AccountsTemplates.configureRoute('resetPwd');
默认会将用户路由到fullPageAtForm,以便他们可以重新输入新密码。
请查看useraccounts:flow-routing readme了解更多详情。