gpt4 book ai didi

javascript - Sails.js + Passport.js : passport. 未使用初始化()中间件

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:24 25 4
gpt4 key购买 nike

我正在使用 Sails.js 并尝试将 Passport.js 与 REST API 结合使用。但是当我尝试在我的 Controller 中调用我的登录功能时,我遇到了以下错误:

    /Users/Michael/Development/DictationProject/sails/20151010/dictee/node_modules/passport/lib/http/request.js:44
if (!this._passport) { throw new Error('passport.initialize() middleware not in use'); }
^
Error: passport.initialize() middleware not in use
at IncomingMessage.req.login.req.logIn (/Users/Michael/Development/DictationProject/sails/20151010/dictee/node_modules/passport/lib/http/request.js:44:34)
at /Users/Michael/Development/DictationProject/sails/20151010/dictee/api/controllers/AuthController.js:20:17
at Strategy.strategy.success (/Users/Michael/Development/DictationProject/sails/20151010/dictee/node_modules/passport/lib/middleware/authenticate.js:194:18)
at verified (/Users/Michael/Development/DictationProject/sails/20151010/dictee/node_modules/passport-local/lib/strategy.js:83:10)
at /Users/Michael/Development/DictationProject/sails/20151010/dictee/config/passport.js:53:18

我的 config/http.js 文件配置如下( session 在 passportInit 和 passportSession 之前加载):

passportInit    : require('passport').initialize(),
passportSession : require('passport').session(),
flash : require('connect-flash'),


order: [
'startRequestTimer',
'cookieParser',
'session',
'passportInit',
'passportSession',
'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'flash',
'router',
'www',
'favicon',
'404',
'500'
],

不明白哪里不对...

编辑:

它似乎来自 config/passport.js 中的 passport.use() :

passport.use('login', new LocalStrategy({
passReqToCallback : true,
usernameField: 'email',
passwordField: 'password'
},
function(req, email, password, done) {
console.log('In passport.use login');
// check in mongo if a user with email exists or not
User.findOne({ 'email' : email }, function (err, user) {
// In case of any error, return using the done method
if (err) {
console.log('Error passport.use login');
return done(err);
}
// Username does not exist, log error & redirect back
if (!user) {
console.log('User Not Found with email '+email);
return done(null, false, req.flash('message', 'User Not found.'));
}

console.log('One user matching this email address found');

// User exists but wrong password, log the error
bcrypt.compare(password, user.password, function (err, res) {
if (!res) {
console.log('Invalid Password');
return done(null, false, req.flash('message', 'Invalid Password'));
}

// User and password both match, return user from
// done method which will be treated like success
console.log('One user matching this email address and password found');

var returnUser = {
name: user.name,
email: user.email,
createdAt: user.createdAt,
id: user.id
};

console.log('Returning User: ' + returnUser);
return done(null, returnUser,
req.flash('message', 'Logged In Successfully')
);
});
});
}
));

最佳答案

按照 Passport 上 Sails.js 创建者的建议:https://github.com/balderdashy/sails/pull/1224

通过将 Passport 中间件放在 config/policies.js 文件中解决问题:

var passport = require('passport');

module.exports.policies = {
'*': [
// Initialize Passport
passport.initialize(),

// Use Passport's built-in sessions
passport.session()
]
}

关于javascript - Sails.js + Passport.js : passport. 未使用初始化()中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33106986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com