【问题标题】:Why LoopbackJS doesn't set values for emailVerified and verificationToken?为什么 LoopbackJS 不为 emailVerified 和 verifyToken 设置值?
【发布时间】:2015-11-05 00:13:51
【问题描述】:

我创建了一个自定义的Client 模型,它的基类是一个内置的User 模型。我为此使用了命令行工具slc loopback:model。为模型自动创建的配置如下(common/models/client.json):

{
  "name": "Client",
  "plural": "Clients",
  "base": "User",
  "idInjection": true,
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

据我了解,我的自定义 Client 模型具有 User 模型的所有属性和行为。

现在我想创建一些 Client 实例并将它们插入 MongoDB。文档说 POST /users HTML 请求创建一个新的数据库条目,环回自动设置一些值 (https://docs.strongloop.com/display/public/LB/User+REST+API):

提供用户对象属性的 JSON 对象(在请求正文中): 用户名、密码、电子邮件。 LoopBack 设置 emailVerified 和 验证令牌.

但是当我运行我的脚本时,既没有设置emailVerified,也没有设置verificationToken。 DB 仅填充我作为POST 正文传递的值。这是我的代码:

ds.automigrate(collections, function(er) {
    if (er) throw er;
    console.log('Looback tables [' + collections + '] created in ', ds.adapter
        .name);

    server.models.Client.create([{
        username: 'admin',
        password: "admin",
        email: 'admin@gmail.com',
        dtCrt: new Date()
    }, {
        username: 'admin2',
        password: "admin2",
        email: 'admin2@gmail.com',
        dtCrt: new Date()
    }], function(err, newClient) {
        ds.disconnect();
        process.exit();
    });
});

这是一个结果。未设置 emailVerifiedverificationToken 值:

[ { username: 'admin',
    password: '$2a$10$EdyVnfIATxoOzI6vUeV3POIgKGomY/gtKRXfoWcrTRWZDm0dKl41y',
    email: 'admin@gmail.com',
    dtCrt: Sun Nov 01 2015 20:08:23 GMT+0800,
    id: 563600b85e1c289829390e48 },
  { username: 'admin2',
    password: '$2a$10$ya6yf7iGraPGPvhjtVunZeug1i7/aTF8aSn.mYlqF0zUNVO73DJ8e',
    email: 'admin2@gmail.com',
    dtCrt: Sun Nov 01 2015 20:08:23 GMT+0800,
    id: 563600b85e1c289829390e49 } ]

为什么?如何让 Loopback 按照其文档所述设置这些值?

【问题讨论】:

    标签: mongodb loopbackjs strongloop


    【解决方案1】:

    如果您查看 StrongLoop 中的文档,它需要您在 server/model-config.json 文件中设置用户配置。

    "client": {
    "dataSource": "db",
    "public": true,
    "options": {
      "emailVerificationRequired": true
    }
    

    创建新客户端应将其设置为“false”但没有验证令牌。 这里有一个完整的例子:Loopback user example

    但基本上,Loopback 会在以下情况下设置 emailVerified 和 verifyToken 设置:

    • 您启用 emailVerificationRequired 标志
    • 添加代码以注册和验证用户。

    【讨论】:

    • 但这就是问题所在。如果您选择使用默认 Loopback 的 REST API,则无法添加用于注册和验证用户的代码。所有这些功能已经在引擎盖下的某个地方进行了硬编码。您所能做的就是在正文中使用新客户的凭据调用POST /Clients 请求。 Loopback 必须做其他所有事情 - 在您的数据库中添加所有必需的数据,例如 createdAtmodifiedAtemailVerifiedverificationToken 等。但它没有
    猜你喜欢
    • 2011-10-28
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多