【发布时间】:2015-09-16 04:50:50
【问题描述】:
我正在尝试在本地 mysql 数据库中使用护照 js 进行身份验证。我正在使用邮递员扩展来测试应用程序。 我正在发送两个字段,即用于身份验证的用户名和密码。当任一字段为空时,响应以 json 格式显示为
{
"message": "Missing credentials",
"user": false
}
但是当我为这两个字段传递值时,我得到 500 内部服务器错误。
错误:发送 500(“服务器错误”)响应: TypeError:无法读取未定义的属性“消息” 在 d:\Test\api\controllers\AuthController.js:25:23 在 Strategy.strategy.error (d:\Test\node_modules\passport\lib\middleware\authenticate.js:333:18) 在 Strategy.authenticate (d:\Test\node_modules\passport-local\lib\strategy.js:94:17) 尝试(d:\Test\node_modules\passport\lib\middleware\authenticate.js:341:16) 在验证(d:\Test\node_modules\passport\lib\middleware\authenticate.js:342:7) 在 Object.module.exports.login (d:\Test\api\controllers\AuthController.js:37:7) 在绑定处 (C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\lodash\dist\lodash.js:729:21) 在 routeTargetFnWrapper (C:\Users*\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5) 在回调(C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37) 在参数处(C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11) 通过时(C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5) 在 nextRoute (C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:100:7) 在回调(C:\Users*\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:167:11) 在 C:\Users*\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:187:7 在 alwaysAllow (C:\Users*\AppData\Roaming\npm\node_modules\sails\lib\hooks\policies\index.js:207:11) 在 routeTargetFnWrapper (C:\Users*\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5) [TypeError: Cannot read property 'message' of undefined]**
下面是我的 AuthController
var passport=require('passport');
login:function(req,res){
passport.authenticate('local', function(err, user, info) {
if ((err) || (!user)) {
return res.send({
message:info.message,
user: user
});
}
req.logIn(user, function(err) {
if (err) res.send(err);
return res.send({
message:"User Loged In",//info.message,
user: user
});
});
})(req, res);
}
};
我正在使用以下模型进行测试
module.exports = {
tableName: 'users',
connection:'TestDB',
autoCreatedAt:false,
autoUpdatedAt:false,
attributes: {
username:{
type:'string',
required:true
},
password:{
type:'string',
required:true
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
}
};
包含用户名和密码的表还具有其他字段,例如国家/地区。有什么办法可以使用护照进行身份验证。
【问题讨论】:
-
提供您的
AuthController.js,以及与之相关的任何模型。或者直接用这个生成器sails-generate-auth,很简单。
标签: mysql node.js sails.js passport.js passport-local