【问题标题】:Passport.Js doesn't let me create two different authentication routesPassport.Js 不允许我创建两个不同的身份验证路由
【发布时间】:2015-01-06 22:54:16
【问题描述】:

我正在尝试对两个不同的 api 使用两种不同的基本身份验证条件。但是当我在我的项目中添加第二个身份验证条件时,Passport.Js 根本不允许我进行身份验证。一直说密码错误。下面是代码:任何人都可以建议它有什么问题吗?如果这是一个菜鸟问题,我很抱歉。我刚刚开始使用 node,所以整个框架对我来说都是新的。

// Load required packages
var passport = require('passport');
var passport2= require('passport');
var BasicStrategy = require('passport-http').BasicStrategy;
var BasicStrategy2 = require('passport-http').BasicStrategy;
var User = require('../models/useridentity');
var User2 = require('../models/useridentity');


passport.use(new BasicStrategy(
  function(username, password, callback) {
   User.findOne({ username: username }, function (err, user) {
   if (err) { return callback(err); }

  // No user found with that username
  if (!user) { return callback(null, false); }

  // Make sure the password is correct
  user.verifyPassword(password, function(err, isMatch) {
    if (err) { return callback(err); }

    // Password did not match
    if (!isMatch) { return callback(null, false); }

    // Success
    return callback(null, user);
  });
});
}
));

passport2.use(new BasicStrategy2(
 function(user, pass, callback) {
  User2.findOne({ useremail: user }, function (err, user) {
  if (err) { return callback(err); }

  // No user found with that username
  if (!user) { return callback(null, false); }

  // Make sure the password is correct
  user.verifyPassword(pass, function(err, isMatch) {
    if (err) { return callback(err); }

    // Password did not match
    if (!isMatch) { return callback(null, false); }

    // Success
    return callback(null, user);
  });
});
}
));

exports.isAuthenticated = passport.authenticate('basic', { session : false });
exports.isAuthenticated2 = passport2.authenticate('basic',{session:false});

【问题讨论】:

    标签: node.js authentication passport.js


    【解决方案1】:

    多次要求相同的模块是没有意义的 - 由于模块缓存,您可能会收到相同的对象。您可以在use 中命名策略,这样可以使用不同配置的相同策略:

    var passport      = require('passport'),
        BasicStrategy = require('passport-http').BasicStrategy;
    
    passport.use('auth1', new BasicStrategy(...));
    passport.use('auth2', new BasicStrategy(...));
    
    app.post('/api1', passport.authenticate('auth1'), function(req, res) { ... });
    app.post('/api2', passport.authenticate('auth2'), function(req, res) { ... });
    

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2015-12-25
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多