Sailsjs登录API

时间:2015-06-10 22:29:17

标签: rest sails.js

我有一个只有用户(电子邮件和密码)进行身份验证的sailsjs项目。

以下是代码:

routes.js

'PUT /login': 'UsersController.login'

UsersController.js:

login: function (req, res) {

    // Try to look up user using the provided email address
    Users.findOne({
      correo: req.param('correo')
    }, function foundUser(err, user) {
      if (err) return res.negotiate(err);
      if (!user) return res.notFound();

      // Compare password attempt from the form params to the encrypted password
      // from the database (`user.password`)
      require('machinepack-passwords').checkPassword({
        passwordAttempt: req.param('password'),
        encryptedPassword: user.encryptedPassword
      }).exec({

        error: function (err){
          return res.negotiate(err);
        },

        // If the password from the form params doesn't checkout w/ the encrypted
        // password from the database...
        incorrect: function (){
          return res.notFound();
        },

        success: function (){

          // Store user id in the user session
          req.session.me = user.id;

          // All done- let the client know that everything worked.
          return res.ok();
        }
      });
    });

  }

如果我在sailsjs中访问它,它可以在控制器中使用以下命令正常工作:

$http.put('/login', {
    correo: $scope.loginForm.correo,
    password: $scope.loginForm.password
  })

但如果我尝试在POSTMAN中执行 PUT http://localhost:1337/login(服务器正在运行的地方),我会收到404 Not Found ERROR。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这是正确的,因为它使用res.notFound()进行响应; (404)如果不正确且密码确实不正确。

答案 1 :(得分:1)

我认为在sails函数中,当您发布,放置和传递JSON对象时,它可以通过

访问
var attributes=req.body
Users.findOne({correo:attributes['correo']})

类似的东西,req.params('')用于GET参数,如果不是这样,我们能看到你在POSTMAN中做了什么吗?