我有一个只有用户(电子邮件和密码)进行身份验证的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。
有什么想法吗?
答案 0 :(得分:3)
这是正确的,因为它使用res.notFound()进行响应; (404)如果不正确且密码确实不正确。
答案 1 :(得分:1)
我认为在sails函数中,当您发布,放置和传递JSON对象时,它可以通过
访问var attributes=req.body
Users.findOne({correo:attributes['correo']})
类似的东西,req.params('')用于GET参数,如果不是这样,我们能看到你在POSTMAN中做了什么吗?