Sails.js API passport.js身份验证

时间:2015-04-25 08:24:14

标签: node.js authentication sails.js passport.js

我正在尝试在Sails.js中开发API后端。

我需要的最基本的东西是身份验证。

有了这个,我找到了sails-generate-auth生成器,我已经按照列出的所有步骤进行了操作 sails-generate-auth

现在,当我访问http://localhost:1337/register时,我会看到一个简单的注册表单,同样适用于登录,登录后,我在浏览器中看到一个Cookie设置为sails.sid

检查AuthController.js后,我发现它已经为服务器渲染视图编写。

我应该如何修改controller / sailsApp以使其支持基于API的身份验证。

我希望有:

  1. 通过邮寄接受用户名和密码的注册路由 内容类型为application / json。

  2. 可以接受用户名和密码的登录路线 content-type application / json并使用bearer token返回,以便前端应用程序可以在下次发出请求时将其添加到其标题中。

  3. auth ACL下的所有其他路由,用于检查是否为承载 令牌已存在且已经过验证。

2 个答案:

答案 0 :(得分:2)

在你的AuthController回调函数中,替换为:

res.redirect('/');

用这个:

console.log(user);
var userID = user.id;
Passport.find({user: userID}, function(err, items){
    if(err) return err;

    console.log(items[0].accessToken);
    // Make sure you dont give them any sensetive data
    res.json({userData: user, token: items[0].accessToken});
});
// Upon successful login, send the user to the homepage were req.user
//res.redirect('/');

现在,当客户端发送登录/注册请求时,服务器将以JSON响应进行响应。确保您在其他风帆应用操作上请求令牌。

答案 1 :(得分:1)

我一直在使用这些步骤。

第1步(全局):$ npm install -g sails

第2步(应用程序):$ sails new myApp

步骤3(文件):将https://github.com/carlospliego/sails-token-auth-setup中的每个文件复制到相应的文件夹

步骤4(策略):将此代码添加到config / policies.js

 '*': "hasToken",
 UserController: {
    "create": true
 },
 AuthController: {
    '*': true
 }

步骤5:更改config / tokenSecret.js的值

第6步:(依赖关系)

  • npm install --save passport
  • npm install --save passport-local
  • npm install --save bcrypt-nodejs
  • npm install --save jsonwebtoken
  • npm install --save express-jwt

您的终端将如下所示:

  • POST / GET / PUT / DELETE user /
  • POST auth / login
  • DELETE auth / logout

以下是有关如何在风帆中创建基于令牌的身份验证的精彩指南:https://github.com/carlospliego/sails-token-auth-setup