1

我正在使用 Meteor 的account-entry包来处理我的网络应用程序的登录注册操作。要将Confirm Password字段添加到注册表单,这就是我所做的(在 CoffeeScript 中):

AccountsEntry.config
      logo: '/logo.png'
      homeRoute: 'main'
      dashboardRoute: 'main'
      profileRoute: '/profile'
      extraSignUpFields: [
        field: "confirmPassword"
        label: "Confirm Password"
        type: "password"
      ,
        field: "name"
        label: "Full Name"
        placeholder: "Full Name"
        type: "text"
        required: true
      ,
        field: "position"
        label: "Position"
        placeholder: "Developer"
        type: "text"
      ]

这种方法的问题在于:它还将confirmPassword字段保存到数据库中,这样当有人访问数据库>用户集合时,他们可以清楚地看到confirmPassword字段中每个用户的密码——这很糟糕。

我还不知道如何解决这个问题。我认为可能有一个属性决定是否应将特定字段存储在数据库中,但我还没有弄清楚!(accounts-entry文档对我来说似乎不够详细,我不得不说:()

你们能帮我解决这个问题吗?提前非常感谢!

4

1 回答 1

1

缺少密码确认字段是accounts-entry 的一个已知问题

另一方面,用户集合的发布功能应该只发布严格必要的字段。默认情况下,只有usernameemails发布profile到客户端。

无论如何,您不应该一开始就将 confirmPassword 存储在数据库中。为此,请在返回对象之前挂钩Accounts.onCreateUser并删除该字段:user

Accounts.onCreateUser(function (options, user) {
  delete user.confirmPassword;  // or: delete user.profile.confirmPassword;
  return user;
});
于 2014-10-24T05:05:39.620 回答