【问题标题】:Sails.js route redirect with a custom policySails.js 使用自定义策略进行路由重定向
【发布时间】:2015-03-06 15:02:08
【问题描述】:

我想达到的情况:

请求 /register 运行 AuthController.register

对 /facebook 的请求运行 AuthController.register 但之前应用了 facebook 策略。

我在

中创建了一个策略
/api/policies/facebook.js

喜欢这个

var graph = require('fbgraph');

module.exports = function(req, res, next) {

    facebook_token = req.query.facebook_token;
    if(!facebook_token){
        res.send('401',{error:"Missing facebook token"});
    }
    graph.setAccessToken(facebook_token);
    graph.get("me",function(err,graph_res){
      if(err){
        res.send('401',{error:"Facebook authentication error"});
        return;
      }
      else{
        next();      
      }
    });  
};

中设置策略
/config/policies.js

喜欢这个

module.exports.policies = {
   'auth': {
     'facebook': ['facebook']
   }
}

我这样设置路线

module.exports.routes = {
   'post /register': 'AuthController.register',
   'post /facebook': 'AuthController.register',
};

现在 facebook 策略中的代码不会被调用。我将如何完成这样的事情?

【问题讨论】:

    标签: node.js sails.js middleware


    【解决方案1】:

    我不确定政策是否能按照您的预期发挥作用。在您当前的 /config/policies.js 中,您告诉 Sails 在调用 AuthController 操作 facebook 时运行 facebook.js 策略。由于您没有在控制器中定义此类操作,因此该策略永远不会运行。对于策略而言,请求来自哪个方式并不重要,重要的是请求试图访问哪个控制器操作。

    但是,您可以做的是在每次调用 AuthController.register 时运行策略,并在策略文件中添加一行以检查请求是否来自 /facebook

    /config/policies.js:

    module.exports.policies = {
        auth': {
        'register': ['facebook']
        }
    }
    

    /api/policies/facebook.js:

    module.exports = function(req, res, next) {
        if (req.route.path === '/facebook') {
            facebook_token = req.query.facebook_token;
            if(!facebook_token){
                res.send('401',{error:"Missing facebook token"});
            }
            graph.setAccessToken(facebook_token);
            graph.get("me",function(err,graph_res){
              if(err){
                res.send('401',{error:"Facebook authentication error"});
                return;
              }
              else{
                next();      
              }
            });
        }
        else return next();
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2017-06-09
      • 2011-11-22
      相关资源
      最近更新 更多