【问题标题】:Protect API routes in Sails.js with token-based authentication?使用基于令牌的身份验证保护 Sails.js 中的 API 路由?
【发布时间】:2015-02-05 12:34:13
【问题描述】:

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

我有两个问题:

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

谢谢。

【问题讨论】:

    标签: javascript api sails.js


    【解决方案1】:
    1. 您需要创建策略以防止未经身份验证的用户执行某些请求。我在这里认为 GET /user 和 GET /account 将被路由到查找功能。并且 POST /account 路由到一个创建函数。 在 config/policies.js 中:

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

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

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

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

    您将能够在 Internet 上找到有关 Sails、Policies、Passport、Oauth2 的一些文档。

    希望我对你有所帮助。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2015-11-18
      • 2015-03-04
      相关资源
      最近更新 更多