2014-10-09 52 views
2

在我的Mac上使用SailsJS 0.10.5(使用npm -g安装),我试图将策略应用于控制器操作,这个错误:导致错误的策略:忽略将路由绑定到无功能控制器的无效尝试

error: In user.isloggedin, ignored invalid attempt to bind route to a non-function controller: { identity: 'isAuthenticated', 
globalId: 'isauthenticated', 
_middlewareType: 'POLICY: isAuthenticated' } for path: /isLoggedIn 

我有一个动作控制器,在配置/ route.js的路线,在配置策略/ policies.js

其他细节
如果我不去在config/policies.js文件中使用isAuthenticated我没有收到此错误。
我正在使用护照本地护照

任何想法我做错了什么?

配置/ policies.js

module.exports.policies = { 

    '*': true, 
    UserController: { 
     'signup': true, 
     'isLoggedIn': 'isAuthenticated' 
    }, 
    AuthController: { 
     '*': true 
    } 
}; 


配置/ routes.js

module.exports.routes = { 

    'post /signup' : { 
     controller: 'UserController', 
     action: 'signup', 
    }, 
    '/isLoggedIn' : { 
     controller : 'UserController', 
     action : 'isLoggedIn' 
    } 
}; 


API /控制器/ UserController.js

var passport = require('passport'); 

module.exports = { 
    signup: function(req, res) { 
     User.create(req.params.all()).exec(function(err, user) { 
      if(err) { 
       return res.negotiate(err); 
      } 
      req.logIn(user, function(err) { 
       if(err) { 
        return res.negotiate(err); 
       } 
       return res.redirect('/'); 
      }); 
     }); 
    }, 
    isLoggedIn: function(req, res) { 
     User.findOne({id: req.session.passport.user}).exec(function(err, user) { 
      if(err) { 
       return; 
      } 
      res.json(user); 
     }); 
    } 
}; 


API /政策/ isAuthenticated.js

module.export = function isAuthenticated(req, res, next) { 
    if(!req.isAuthenticated()) { 
     console.log('403!!!'); 
     return res.send(403, {message: 'Not Authorized' }); 
    } 
    console.log('asdf'); 
    return next(); 
}; 

回答

4

尝试改变module.exportmodule.exports < - 在你的文件isAuthenticated.js

+0

哇的小号,可以”我相信我错过了这个哈。感谢您的帮助! :) – jlonganecker 2014-10-09 16:50:55