适用于Android的SailsJs Passport身份验证

时间:2015-06-12 12:59:32

标签: android authentication sails.js passport.js

我正在尝试在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});
      });
    });
  });
}

0 个答案:

没有答案