【问题标题】:Sails.js: policy specific for socket.ioSails.js:特定于 socket.io 的策略
【发布时间】:2014-04-20 02:29:42
【问题描述】:

我已经使用sailsjs 为应用程序构建了一个后端。我的应用使用某种基于令牌的身份验证,为此我设置了策略:

module.exports.policies = {

    // Policies that apply to all controllers.
    // '*': true // DEV ONLY
    '*': [ 'requestData' ],

    'UserController': {
        '*': [ 'requestData' ],
        'register': true,
        'exists': true
    },

    'AdminController': {
        '*': true
    }

};

效果很好。但是,现在我想使用Socket.IO 从我的AdminController 中的视图访问受保护的控制器。但是,正如预期的那样,当我尝试从我的视图中访问资源列表时,会抛出Forbidden

是否可以定义以下策略: - 允许来自同一域的所有请求(httpwebsocket) - 不允许来自任何其他域的所有请求

此外,即使有可能,这种方法是否安全?我拥有整个服务器和域,因此在正常情况下,不会从此服务器提供其他应用程序。

谢谢!

【问题讨论】:

  • 您是说通过套接字访问/admin 下的路由时被“禁止”了吗?不应该是这样的。
  • @ScottGress 不,我正在尝试使用套接字从/admin 下的视图访问我的其他控制器的 REST 路由。例如:socket.get('/request', function(data) {});。但是,由于这些控制器处于需要令牌的特殊策略下,所以我被卡住了(我当然可以为所有硬编码到客户端 javascript 中的 GET 操作制作一个特殊令牌。但这会构成安全风险)..

标签: javascript node.js sockets acl sails.js


【解决方案1】:

请在提问时分享您的sails.js 版本!

对于那些对将策略应用于套接字的一般问题感兴趣的人:https://github.com/balderdashy/sails/issues/1229

对于那些对通过套接字进行身份验证感兴趣的人,请参见下文(这是一个相关问题,也链接自上述问题): https://github.com/balderdashy/sails/issues/1348

【讨论】:

    猜你喜欢
    • 2014-02-05
    • 2014-02-16
    • 2017-07-13
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多