策略导致错误:忽略无效尝试将路由绑定到非功能控制器

时间:2014-10-09 15:42:34

标签: sails.js

在我的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

我有一个带有操作的控制器,config / route.js中的路由,config / 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();
};

1 个答案:

答案 0 :(得分:4)

尝试在您的文件中使用 s module.export更改为module.exports<