1

私は意味をなさない問題に遭遇しており、誰かが助けてくれることを望んでいます。

私はいくつかのマングース プラグインを使用しており、現在はパスポートも統合しようとしています。以下に示すように、passport-local-mongoose プラグインを追加しましたが、メソッドが存在しないというエラーが発生します。スキーマをコンソールにログアウトすると、メソッドが一覧表示されるので、メソッドが存在しない理由がわかりません。

コードサンプル:

var mongoose = require('mongoose');
var timestamps = require('mongoose-timestamp');
var autoIncrement = require('mongoose-auto-increment');
var passport = require('passport');
var passportLocalMongoose = require('passport-local-mongoose');
var BasicStrategy = require('passport-http').BasicStrategy;

var usersSchema = new mongoose.Schema({
  firstName: String,
  lastName: String,
  email: String,
  organizationId: Number,
  description: String
});

module.exports = function(app,db){
  //mongoose setup options
  usersSchema.plugin(timestamps);  
  usersSchema.plugin(autoIncrement.plugin, { model: 'Users', field: 'id' });

  //passport authentication setup
  usersSchema.plugin(passportLocalMongoose);
  var Users = db.model('Users', usersSchema);
  console.log(usersSchema);

  passport.use(new BasicStrategy(usersSchema.authenticate()));

コンソール ログの抜粋は次のとおりです。

methods:
 { nextCount: [Function],
   resetCount: [Function],
   setPassword: [Function],
   authenticate: [Function] },
statics:
 { nextCount: [Function],
   resetCount: [Function],
   authenticate: [Function],
   serializeUser: [Function],
   deserializeUser: [Function],
   register: [Function],
   findByUsername: [Function],
   createStrategy: [Function] },

しかし、次のエラーが発生します。

passport.use(new BasicStrategy(usersSchema.authenticate()));
                                             ^
TypeError: Object #<Schema> has no method 'authenticate'

メソッドが利用可能であることがわかりますが、なぜアクセスできないのでしょうか。基本的なことが抜けている場合は申し訳ありませんが、これらのことのいくつかはまだ学んでいます。ご協力ありがとうございます。

4

1 に答える 1

1

認証方法は、スキーマではなくモデルで定義されています -

passport.user(new  BasicStrategy(Users.authenticate());
于 2014-02-21T05:07:36.180 に答える