使用基于令牌的身份验证保护Sails.js中的API路由?

时间:2015-02-05 12:34:13

标签: javascript api sails.js

我是Sails.js的新手。我使用sails generate api [name]命令创建了一个新项目和一些API。这些新的API具有完整的CRUD功能,因此我可以进行GET,POST,PUT等。为了保护它们,我实现了一个基于标记令牌的身份验证系统,供访问我的API的客户端使用。令牌也会保留在数据库中。

我有两个问题:

  1. 如何禁用特定路由上的某些操作(例如,在/ user API上启用GET请求,但不在/ account API上启用GET请求,但允许在/ account API上启用POSTS)
  2. 我希望客户端为每个后验证请求发送回生成的访问令牌。当他们这样做时,如何在允许访问所请求的路由之前拦截请求并检查数据库中是否存在令牌?
  3. 谢谢。

2 个答案:

答案 0 :(得分:1)

  1. 您需要创建策略以防止未经身份验证的用户执行某些请求。我在这里考虑GET / user和GET / account将被路由到find函数。 POST /帐户路由到创建功能。 在config / policies.js中:

    module.exports.policies = {
     'UserController': {
      'create': 'isAuth',
      'find': true
      },
     'AccountController': {
      'create': 'isAuth',
      'find': true
      }
    }
    

    您需要在api / policies中添加isAuth.js策略文件

  2. 要在Sails中验证用户,我使用(尽可能多的)passportjs。您将定义身份验证策略。它是一个功能强大的工具,允许您创建自定义身份验证策略或在需要时使用OAuth2协议(如果您使用令牌,则应使用它)。

  3. Sails确实拦截每个请求并执行您为路由操作配置的策略。

    您可以在Sails,Policies,Passport,Oauth2上找到Internet上的一些文档。

    希望我帮助过你。

答案 1 :(得分:0)

我已经在这里为您创建了一个指南:https://github.com/carlospliego/sails-token-auth-setup