创buildStormpath用户并在一次调用中分配给组

我想提交用户创build请求的团体,但不知道如何做到这一点快递失败。

现在我使用注册前和注册后的处理程序来获取一个字段,将其从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(); } 

这似乎不是一个好主意。 如果连接不可用,组分配失败,会发生什么情况? 用户可能会陷入没有群体的状态。

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

如果您在窗体configuration中定义它,express-stormpath会自动将表单字段保存为“自定义数据”:

 web: { register: { form: { fields: { describes: { enabled: true, label: 'Position', name: 'describes', placeholder: 'eg 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(); } 

这样,你保证价值将被保存。 如果注册后处理程序出于某种原因失败,则可以通过检查帐户的自定义数据资源来查看用户应该在哪个组中。