在函数内包装passport.authenticate不起作用

时间:2016-03-31 07:51:28

标签: node.js passport.js

我正在尝试使用Google OAuth2Strategy对用户进行身份验证。我有以下路线

**server.get('/user/google', passport.authenticate('google', {scope: ['openid email profile']});
server.get('/user/google/callback', authenticate.authenticateGoogleCallback);** 

这完全没问题。但是当我将第一个身份验证包装起来就像我为回调做的那样,它只是挂起。这是一个错误,或者我做错了什么?

这就是我的尝试。

**server.get('/user/google', authenticate.authenticateGoogle); // NOT WORKING
server.get('/user/google', function(req,res,next){ // NOT WORKING
     passport.authenticate('google', {scope: ['openid email profile']});
});**

2 个答案:

答案 0 :(得分:3)

试试这个,让我们知道它是否有效。 (你必须在功能结束时提供(res,req,next),如本链接所述http://passportjs.org/docs

var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var transform = require('vinyl-transform');
var uglify = require('gulp-uglify');

gulp.task('browserify', function () {
  var browserified = transform(function(filename) {
    var b = browserify({
      entries: filename,
      debug: true,
      transform: [
        [babelify, {
          presets: ['react', 'es2015']
        }]
      ]
    });
    return b.bundle();
  });
  
  return gulp.src(['views/main.js'])
    .pipe(browserified)
    .pipe(uglify())
    .pipe(gulp.dest('./dist'));
});

答案 1 :(得分:0)

这是我包装护照的方式。在我的一个项目中进行身份验证:

server.get('/user/google', (req, res, next) => {
  // making additional checks [you can skip this]
  const auth = req.header('Authorization')

  if (auth) {
    // this is what you are looking for
    passport.authenticate('jwt', { session: false })(req, res, next)
  } else {
    next()
  }
})