node.js - 创建 Stormpath 用户并在一次调用中分配给组

标签 node.js express stormpath express-stormpath

我想向组提交用户创建请求,但不确定如何在 express-stormpath 中执行此操作。

现在我使用注册前和注册后处理程序获取字段,将其从 formData 中删除,传递给 res,然后在注册后处理程序上设置组:

preRegistrationHandler: function (formData, req, res, next) {
    res.locals.describes = formData.describes;
    delete formData.describes;

    next();
},

postRegistrationHandler: function (account, req, res, next) {
    var seekerHref = config.SEEKERS_HREF;
    var employerHref = config.EMPLOYERS_HREF;

    if (res.locals.describes === "seeker") {
        //Adding to seeker group
        account.addToGroup(seekerHref, function(err, membership) {
            console.log(membership);
        });
    } else if (res.locals.describes === "employers") {
        //Adding to the employer group
        account.addToGroup(employerHref, function(err, membership) {
            console.log(membership);
        });
    }
    delete res.locals.describes;

    next();
}

这似乎不是个好主意。如果连接不可用并且组分配失败会怎样?如果没有群组,用户可能会陷入困境。

最佳答案

另一种方法是将值保存到帐户的自定义数据对象中,然后使用它来创建组。

如果您在 form configuration 中定义表单字段,则 express-stormpath 会自动将其保存到自定义数据中:

web: {
  register: {
    form: {
      fields: {
        describes: {
          enabled: true,
          label: 'Position',
          name: 'describes',
          placeholder: 'e.g. employer, seeker',
          required: true,
          type: 'text'
        }
      }
    }
  }
}

然后,在您的注册后处理程序中,检索自定义数据值并使用它来分配组:

postRegistrationHandler: function (account, req, res, next) {
    var seekerHref = config.SEEKERS_HREF;
    var employerHref = config.EMPLOYERS_HREF;

    account.getCustomData(function(err, customData) {
        if (customData.describes === "seeker") {
            //Adding to seeker group
            account.addToGroup(seekerHref, function(err, membership) {
                console.log(membership);
            });
        } else if (customData.describes === "employers") {
            //Adding to the employer group
            account.addToGroup(employerHref, function(err, membership) {
                console.log(membership);
            });
        }

        customData.remove('describes');
        customData.save(function(err) {
            if (err) throw err;
        });
    });

    next();
}

这样,您就可以保证该值将被保存。如果后注册处理程序由于某种原因失败,您可以通过检查帐户的自定义数据资源来了解用户应该属于哪个组。

关于node.js - 创建 Stormpath 用户并在一次调用中分配给组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36994245/

相关文章:

javascript - 正则表达式无效 : Invalid group

node.js - 在 Express/Node 中通过 https 强制请求

javascript - Express 与浏览器结合使用 Node 同步

node.js - 在亚马逊 EC2 上托管 nodeJS/mongoose Web 应用程序

WordPress root 主题安装错误

node.js - 空闲时间后关闭监听器

angularjs - 添加 Stormpath Angular SDK 后出现 CORS 问题

node.js - 我想使用 Stormpath、Express.js 和 Node.js。我想要stormpath-express 还是express-stormpath?

node.js - 开发时绕过 Storm 路径

javascript - 是否有可能捕捉到 webRTC 流视频分辨率的变化?