【问题标题】:How do you change the reset password URL in meteor?你如何更改流星中的重置密码URL?
【发布时间】:2012-12-17 07:23:09
【问题描述】:

我正在使用meteoraccounts-password 包。我正在滚动自己的登录名和密码更改/重置 UI,并想知道...

如何在Accounts.resetPassword发送的重置密码邮件中自定义密码重置链接?

目前它的形式如下:/#/reset-password/<id>'。由于我使用的是meteor router,因此我想以'/reset-password/<id>' 的形式发送,这样我就可以通过'/reset-password/:id' 的路线捕获它。

【问题讨论】:

标签: javascript meteor


【解决方案1】:

聚会迟到了……

您可以更改网址,而不是更改整个文本:

Meteor.startup(function() {
 Accounts.urls.resetPassword = function(token) {
    return Meteor.absoluteUrl('reset-password/' + token);
  };
});

【讨论】:

  • 修改 url 效果很好,但由于某种原因发送的令牌是另一个令牌
  • 当我看到@david-lawson 参与了这个答案时,我就知道这将是我正在寻找的黄金!为我省去了很多麻烦 - 希望我能早点找到它。为什么这不在文档中???谢谢大家。
  • 很好的解决方案,在我看来,Accounts.urls 没有记录在 Meteor-docs 中。
  • Found a quick mention of it in the docs here 注意:Accounts.urls 需要在仅服务器代码中调用。这让我困惑了一分钟,因为文档中提到的上下文就在 Accounts.onResetPasswordLink 之后,这只是客户端。
【解决方案2】:

有点变化:

你必须使用

Accounts.emailTemplates.resetPassword.text

对于 url,您可以简单地替换 hashbang,而不是从 url 解析令牌。作为一个例子(在咖啡脚本中):

Meteor.startup(() ->
  Accounts.emailTemplates.resetPassword.text = (user, url) ->
     url = url.replace('#/', '')
     return "Click this link to reset your password: " + url
)

ES6

Meteor.startup(() =>
  Accounts.emailTemplates.resetPassword.text = function(user, url) {
     url = url.replace('#/', '');
     return `Click this link to reset your password: ${url}`;
   }
);

【讨论】:

    【解决方案3】:

    section on email templates in the Meteor docs

    resetPassword:一个有两个字段的对象:

    • resetPassword.subject:一个函数,它接受一个用户对象并为重置密码电子邮件的主题行返回一个字符串。
    • resetPassword.text:接受用户对象和 url 的函数,并返回重置密码电子邮件的正文。

    您可以自定义将哪个url传递给重置密码的电子邮件方法:

    Accounts.resetPassword.text = function(user, url) {
      return "Click this link to reset your password: /reset-password/" + myId;
    }
    

    【讨论】:

    • 啊哈,我只是找不到那个部分。谢谢。
    • 等等我怎么得到myId?传递给函数的 url 看起来像我想要更改的原始 URL。
    • myId 只是一个示例,您应该自己实现该方法。
    • 好的,我用这个 sn-p 得到了它:``` Accounts.emailTemplates.resetPassword.text = function(user, url) { var id = url.split('/')[ 5]; return "点击此链接重设密码:/reset-password/" + id; } ```
    • var id = url.substring(url.lastIndexOf('/') + 1) 可能是一个更安全的选择,因为基本 url 可能会改变。
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2018-10-05
    相关资源
    最近更新 更多