gpt4 book ai didi

node.js - Sails.js Waterlock/auth/register 导致错误 500

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:32 24 4
gpt4 key购买 nike

试图让 Waterlock 不在登录时创建新用户。

当我将 createOnNotFound 设置为 false 并尝试使用 http://localhost:1337/auth/register?email=a@s.d&password= 12345678 注册一个新用户。我遇到了 500 错误:

error: Sending 500 ("Server Error") response: TypeError: undefined is not a function
at Object.module.exports (D:\temp\sails-waterlock\node_modules\waterlock\lib\controllers\actions\register.js:25:44)
at bound (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\lodash\dist\lodash.js:729:21)
at routeTargetFnWrapper (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5)
at callbacks (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37)
at param (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11)
at param (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:135:11)
at pass (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5)
at nextRoute (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:100:7)
at callbacks (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:167:11)
at C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:187:7
at alwaysAllow (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\lib\hooks\policies\index.js:207:11)
at routeTargetFnWrapper (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5)
at callbacks (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37)
at param (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11)
at param (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:135:11)
at pass (C:\Users\sandres\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5) [TypeError: undefined is not a function]

The register module,错误发生的地方是waterlock库的一部分。

下面是注册模块的代码:

'use strict';

/**
* login action
*
* tries to find if we have an auth method to handle this type of login
* request.
*
* GET /auth/login
*/
module.exports = function(req, res){
var params = waterlock._utils.allParams(req);

// If there is only 1 chosen auth method just assume it
if(waterlock._utils.countTopLevel(waterlock.methods) === 1){
params.type = waterlock._utils.accessObjectLikeArray(0, waterlock.methods).authType;
}

if(typeof params.type === 'undefined'){
return res.badRequest('You must specify a type parameter.');
}

if(waterlock.methods.hasOwnProperty(params.type)){
// call the login function of the correct auth type
waterlock.methods[params.type].actions.register(req, res);
}else{
return res.badRequest('unknown/invalid authentication type');
}
};

Sails v 0.11,Waterlock v 0.1.0

现在如何注册用户?

更新:

发生这种情况是因为注册操作尚未在我用于身份验证的 waterlock-local-auth 模块中实现。有关详细信息,请参阅 this PR

因此更新后的问题是:在实现完成之前如何解决这个问题?

最佳答案

我已经通过 /controllers/AuthController.js 中的自定义注册操作解决了这个问题:

module.exports = require('waterlock').waterlocked({

register: function(req, res) {
var params = req.params.all(),
def = waterlock.Auth.definition,
criteria = { },
scopeKey = def.email !== undefined ? 'email' : 'username';

var attr = {
password: params.password
}
attr[scopeKey] = params[scopeKey];
criteria[scopeKey] = attr[scopeKey];

waterlock.engine.findAuth(criteria, function(err, user) {
if (user)
return res.badRequest("User already exists");
else
waterlock.engine.findOrCreateAuth(criteria, attr, function(err, user) {
if (err)
return res.badRequest(err);
delete user.password;
return res.ok(user);
});
});
}

});

这正是我所需要的。

同时 Wayne-o ,Waterlock 贡献者之一,said他会完成他的implementation of registrationwaterlock-local-auth .

关于node.js - Sails.js Waterlock/auth/register 导致错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29944905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com