我正在尝试在SailsJs项目中使用Passport进行身份验证。我使用sails-generate-auth生成模板。使用浏览器向Sails服务器发送http请求时,注册过程很有效。
但是,尝试从Android设备注册用户时,它无法正常工作。
基于我的理解的基本流程是: 1)用户在Android设备上输入注册信息; 2)Android设备向Sails服务器发送http请求; 3)Sails服务器注册用户,如果成功,则将访问令牌与用户信息和用户ID一起发送回Android设备。 4)在所有后续的http请求中,Android设备都包含访问令牌。
要实施第2步,Android设备会在http POST请求正文中打包数据并将其发送到以下内容,
sliderValue.textProperty().bind(
Bindings.format("Sleep: %.0f", slider.valueProperty())
);
类似于我在使用浏览器时所做的。但是,服务器会输出错误,即AuthController.js中的req.login未定义。
我无法理解浏览器的req有登录方法的原因,而Android设备的req没有这样的方法吗?
相关代码如下:
在config / routes.js
中post /auth/local/register
在api / controllers / AuthController.js
中'post /auth/local': 'AuthController.callback',
'post /auth/local/:action': 'AuthController.callback',
在api / services / passport.js
callback: function (req, res) {
function tryAgain (err) {
//Some logics here. Omitted.
}
passport.callback(req, res, function (err, user) {
if (err) {
return tryAgain();
}
req.login(user, function (err) {
if (err) {
return tryAgain();
}
var userID = user.id;
Passport.find({user: userID}, function(err, items){
if(err)
return err;
res.json({userData: user, token: items[0].accessToken});
});
});
});
}