首页 文章

Sails.js API passport.js身份验证

提问于
浏览
2

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

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

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

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

在检查 AuthController.js 之后,我看到它已经为服务器渲染视图编写了 .

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

我理想的是希望:

  • 一个注册路由,它将通过内容类型为application / json的帖子接受用户名和密码 .

  • 登录路由,它将接受带有内容类型application / json的用户名和密码,并返回带有承载令牌,以便前端应用程序可以在下次发出请求时将其添加到其标头中 .

  • auth ACL下的所有其他路由,它将检查是否存在且已验证的承载令牌 .

2 回答

  • 1

    在你的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响应进行响应 . 确保您在其他风帆应用操作上请求令牌 .

  • 2

    我一直在使用这些步骤一段时间了 .

    第1步(Globals):$ 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 - 保存护照

    • npm install --save passport-local

    • npm install --save bcrypt-nodejs

    • npm install --save jsonwebtoken

    • npm install --save express-jwt


    您的 endpoints 将如下所示:

    • POST / GET / PUT / DELETE用户/

    • POST auth / login

    • 删除身份验证/注销


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

相关问题