2014-10-09 51 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