首页 > 解决方案 > 如何将 account-js 包集成到已经存在的 mongo db?

问题描述

我有一个流星应用程序并想迁移非流星应用程序。我发现 account-js 与流星账户系统兼容。当我创建新用户时,一切正常,但如果我想使用已经存在的用户帐户登录,js 方法不起作用,我每次都会收到 unauth 消息。如何使用 account-js 登录已经存在的用户?

   
const accountsPassword = new AccountsPassword({
  verifyPassword: (plainPassword, storedPassword) => {
    const hashedPassword = crypto.Hash('sha256').update(plainPassword).digest('hex')

    console.log('*****Verify Password*****')
    return bcrypt.compareSync(plainPassword, storedPassword)
  }
})

const accountsServer = new AccountsServer(
  {
    db: accountsMongo
  },
  {
    password: accountsPassword
  }
)

const accountsGraphQL = AccountsModule.forRoot({ accountsServer })


const schema = makeExecutableSchema({
  typeDefs: mergeTypeDefs([typeDefs, accountsGraphQL.typeDefs]),
  resolvers: mergeResolvers([resolvers, accountsGraphQL.resolvers]),
  schemaDirectives: {
    ...accountsGraphQL.schemaDirectives
  }
})

const schemaMiddleware = applyMiddleware(schema, permissions)

标签: meteormeteor-accounts

解决方案


accounts-js 使用与 Meteor 身份验证系统完全不同的身份验证机制。account-js 使用 JWT 令牌,而 Meteor 使用唯一哈希,因此它不是交叉兼容的。我写了一篇关于它的博客文章,你可以在这里阅读


推荐阅读