Meteor应用程序重置密码

时间:2017-03-04 22:00:01

标签: meteor meteor-accounts

我在应用程序中使用流量帐户和帐户密码,并希望用户能够重置其密码。目前不需要对任何表单进行任何自定义,因此我使用了{{> 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。

我似乎在这里遗漏了一些东西,如果有人能够指出我正确的方向让这个工作,我会很感激。

1 个答案:

答案 0 :(得分:1)

根据您的解释,我认为您缺少一些关键功能来实现这一目标。

首先,请记住useraccounts:flow-routing不提供开箱即用的路由。

  

默认情况下没有提供路由,但您可以使用AccountsTemplates.configureRoute轻松配置登录,注册,忘记密码,重置密码,更改密码,注册帐户的路由

鉴于该信息,您至少需要配置重置密码的默认路由。

  

最简单的方法是使呼叫只传入路由代码(可用的路由代码是:signIn,signUp,changePwd,forgotPwd,resetPwd,enrollAccount)。

这是一个例子。

AccountsTemplates.configureRoute('resetPwd');

默认会将用户路由到fullPageAtForm,以便他们可以重新输入新密码。

请查看useraccounts:flow-routing readme了解更多详情。