流星应用重置密码
Meteor application reset password
我在应用程序中使用 meteor-accounts 和 accounts-password 并希望用户能够重置他们的密码。目前不需要对任何表单进行任何自定义,因此我使用了带有 {{> atForm }}
的通用布局和包含以下内容的 /lib/config.js
配置文件:
AccountsTemplates.configure({
showForgotPasswordLink: true,
enablePasswordChange: true,
sendVerificationEmail: true,
enforceEmailVerification: true,
confirmPassword: true,
showResendVerificationEmailLink: true,
continuousValidation: true,
privacyUrl: 'privacy',
});
单击 'reset password' link 会生成如下所示的 URL:
http://localhost:3000/#/reset-password/hMny_A8tdOpNubxtk8mC3BE0vYSJm35K80B2hwwV1CR
然而,这些是完全无用的,因为它们重定向到应用程序的根 URL,同时显然更改了密码;因此,用户在单击其中一个 link 后无法登录。单击一个后用户帐户如下所示:
{ "_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 模板和 Flow Router,包括 useraccounts:flow-routing。
我似乎在这里遗漏了一些东西,如果有人能够为我指明正确的方向以使其正常工作,我将不胜感激。
根据你的解释,我认为你遗漏了一些关键的东西来让它工作。
首先,请记住 useraccounts:flow-routing 不提供开箱即用的路由。
There are no routes provided by default, but you can easily configure routes for sign in, sign up, forgot password, reset password, change password, enroll account using AccountsTemplates.configureRoute
鉴于该信息,您至少需要配置重置密码的默认路由。
The simplest way is to make the call passing in only a route code (available route codes are: signIn, signUp, changePwd, forgotPwd, resetPwd, enrollAccount).
这是一个例子。
AccountsTemplates.configureRoute('resetPwd');
默认会将用户路由到 fullPageAtForm,以便他们可以重新输入新密码。
查看 useraccounts:flow-路由 readme 了解更多详情。
我在应用程序中使用 meteor-accounts 和 accounts-password 并希望用户能够重置他们的密码。目前不需要对任何表单进行任何自定义,因此我使用了带有 {{> atForm }}
的通用布局和包含以下内容的 /lib/config.js
配置文件:
AccountsTemplates.configure({
showForgotPasswordLink: true,
enablePasswordChange: true,
sendVerificationEmail: true,
enforceEmailVerification: true,
confirmPassword: true,
showResendVerificationEmailLink: true,
continuousValidation: true,
privacyUrl: 'privacy',
});
单击 'reset password' link 会生成如下所示的 URL:
http://localhost:3000/#/reset-password/hMny_A8tdOpNubxtk8mC3BE0vYSJm35K80B2hwwV1CR
然而,这些是完全无用的,因为它们重定向到应用程序的根 URL,同时显然更改了密码;因此,用户在单击其中一个 link 后无法登录。单击一个后用户帐户如下所示:
{ "_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 模板和 Flow Router,包括 useraccounts:flow-routing。
我似乎在这里遗漏了一些东西,如果有人能够为我指明正确的方向以使其正常工作,我将不胜感激。
根据你的解释,我认为你遗漏了一些关键的东西来让它工作。
首先,请记住 useraccounts:flow-routing 不提供开箱即用的路由。
There are no routes provided by default, but you can easily configure routes for sign in, sign up, forgot password, reset password, change password, enroll account using AccountsTemplates.configureRoute
鉴于该信息,您至少需要配置重置密码的默认路由。
The simplest way is to make the call passing in only a route code (available route codes are: signIn, signUp, changePwd, forgotPwd, resetPwd, enrollAccount).
这是一个例子。
AccountsTemplates.configureRoute('resetPwd');
默认会将用户路由到 fullPageAtForm,以便他们可以重新输入新密码。
查看 useraccounts:flow-路由 readme 了解更多详情。