错误:passport.initialize()中间件未按调用顺序使用
Error: passport.initialize() middleware not in use what order to make calls?
我有以下-最初由Visual Studio节点工具生成,使用Express和Jade作为客户端
/**
* Module dependencies.
*/
var express = require('express');
var fs = require('fs');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var https = require('https');
var path = require('path');
var passport = require('passport');
var googleStrategy = require('passport-google-oauth').OAuth2Strategy;
var loginHandler = require('./routes/Login.js');
var auth = require('./config/auth.js');
var googleSupport = require('./googleSupport.js');
var googleAuthority = auth.googleAuth;
var googleScopes = '';
// retrieve google scopes
googleScopes = googleSupport.discoverServiceScopes(auth.googleAuth);
// set up passport
passport.serializeUser(function (user,done) {
done(null, user);
});
passport.deserializeUser(function (obj, done) {
done(null, obj);
});
passport.use(new googleStrategy({
clientID: googleAuthority.clientId,
clientSecret: googleAuthority.clientSecret,
callbackURL: googleAuthority.callbackUrl
},
function (accessToken, refreshToken, profile, done) {
return done(null, profile);
}
));
var request = require('request');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
console.log('extracting service scopes');
app.get(passport.initialize());
app.get(passport.session());
app.get('/', routes.index);
app.get('/index', routes.index);
// google login support
// go to login page.
app.get('/googleLogin', passport.authenticate('google', { scope: [googleScopes] }),
function (req, res) {
res.redirect('/');
}
);
app.get('/AuthorizeGoogle', passport.authenticate('google', { failureRedirect: '/'}),
function (req, res) {
res.redirect('/');
});
http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
当它验证用户时我得到以下
500 Error: passport.initialize() middleware not in use
at IncomingMessage.req.login.req.logIn (C:'Node'YourLivesN'YourLivesN'node_modules'passport'lib'http'request.js:44:34)
at Strategy.module.exports.strategy.success (C:'Node'YourLivesN'YourLivesN'node_modules'passport'lib'middleware'authenticate.js:228:13)
at verified (C:'Node'YourLivesN'YourLivesN'node_modules'passport-oauth'node_modules'passport-oauth2'lib'strategy.js:179:18)
at Strategy._verify (C:'Node'YourLivesN'YourLivesN'app.js:41:12)
at C:'Node'YourLivesN'YourLivesN'node_modules'passport-oauth'node_modules'passport-oauth2'lib'strategy.js:195:22
at C:'Node'YourLivesN'YourLivesN'node_modules'passport-google-oauth'lib'passport-google-oauth'oauth2.js:115:7
at passBackControl (C:'Node'YourLivesN'YourLivesN'node_modules'passport-oauth'node_modules'passport-oauth2'node_modules'oauth'lib'oauth2.js:125:9)
at IncomingMessage. (C:'Node'YourLivesN'YourLivesN'node_modules'passport-oauth'node_modules'passport-oauth2'node_modules'oauth'lib'oauth2.js:143:7)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
现在我假设这是相同的原因,这个问题passport.js passport.initialize()中间件没有使用,但无法看到调用应该在我的代码中的顺序。
那么谁能告诉我代码的各个部分应该按什么顺序排列呢?
谢谢
尝试更改这部分
app.get(passport.initialize());
app.get(passport.session());
app.use(passport.initialize());
app.use(passport.session());
主题进一步阅读:express.js中app.use和app.get的区别我建议您将护照配置单独放在一个文件中,并在需要身份验证的路径上使用它。示例教程:https://www.youtube.com/watch?v=zbfet_-Z5UQ&index=12&list=PLZm85UZQLd2Q946FgnllFFMa0mfQLrYDL
相关文章:
- 涉及帧的调用顺序
- 如何按顺序调用延迟函数
- 使用promise或setTimeout确定延迟函数的调用顺序
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 调用加载的顺序函数会意外中断代码
- AngularJS Scope.on和Scope.emit在筛选器中的调用顺序
- 按调用顺序返回由Ajax/HTTP生成的数据列表
- 按顺序调用javascript代码的替代方法,其间有延迟
- js / jquery函数调用顺序未反映在结果中
- jQuery 文档就绪 - 函数调用:顺序或异步
- Ajax在多个函数中调用顺序
- AJAX调用顺序错误(异步)javascript
- 用Ajax调用顺序运行两个函数
- Jasmine断言调用顺序
- 错误:passport.initialize()中间件未按调用顺序使用
- 数据源查询回调问题(调用顺序,改变全局变量的能力)
- Jquery异步调用顺序
- 内容调用顺序令人费解
- Javascript自动完成与ajax调用顺序
- 如何更改它们的调用顺序