Sails.js API passport.js 认证

Sails.js API passport.js authentication

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

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

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

现在,当我访问 http://localhost:1337/register 时,我看到一个简单的注册表单,登录也是如此,登录后,我在浏览器中看到一个 cookie 设置为 sails.sid

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

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

我最希望拥有:

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

  2. 接受用户名和密码的登录路径 content-type application/json 和 return 带有不记名令牌,以便前端应用程序可以在下次发出请求时将其添加到其 header。

  3. auth ACL 下的所有其他路由将检查承载 令牌存在并经过验证。

在您的 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('/');

现在,当客户端发送 login/register 请求时,服务器将响应 JSON 响应。确保您在其他 sails 应用程序操作中请求令牌。

我已经使用这些步骤一段时间了。

第 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 安装 --save bcrypt-nodejs
  • npm 安装 --save jsonwebtoken
  • npm install --save express-jwt

您的端点将如下所示:

  • POST/GET/PUT/DELETE 用户/
  • POST auth/login
  • 删除auth/logout

这是关于如何在 sails 中创建基于令牌的身份验证的重要指南:https://github.com/carlospliego/sails-token-auth-setup