user.jsの
const mongoose = require('mongoose');
const bcrypt = require('bcrypt-nodejs');
const Schema = mongoose.Schema;
//= ===============================
// User Schema
//= ===============================
const UserSchema = new Schema({
email: {
type: String,
lowercase: true,
unique: true,
required: true
},
password: {
type: String,
required: true
}
});
// Pre-save of user to database, hash password if password is modified or new
UserSchema.pre('save', function (next) {
const user = this,
SALT_FACTOR = 5;
if (!user.isModified('password')) return next();
bcrypt.genSalt(SALT_FACTOR, (err, salt) => {
if (err) return next(err);
bcrypt.hash(user.password, salt, null, (err, hash) => {
if (err) return next(err);
user.password = hash;
next();
});
});
});
// Method to compare password for login
UserSchema.methods.comparePassword = function (candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
if (err) { return cb(err); }
cb(null, isMatch);
});
};
module.exports = mongoose.model('User', UserSchema);
passport.js
const passport = require('passport');
const User = require('../models/user');
const config = require('./main');
const LocalStrategy = require('passport-local');
// username field is now email
const localOptions = {
usernameField: 'email'
};
// set up the local login strategy
const localLogin = new LocalStrategy(localOptions, (email, password, done) => {
User.findOne({ email }, (err, user) => {
if (err) { return done(err); }
if (!user) { return done(null, false, { error: 'Your login details could not be verified. Please try again.' }); }
user.comparePassword(password, (err, isMatch) => {
if (err) { return done(err); }
if (!isMatch) { return done(null, false, { error: 'Your login details could not be verified. Please try again.' }); }
return done(null, user);
});
});
});
passport.use(localLogin);
かなり役に立たない写真、しかし - 私は 'モデル/ user.js'それを取るあなたが書いたものです - あなたは、おそらくそれは間違って書いた - それはあなたの(ではないそれの写真)だ場合、コードを投稿し、言うことができる –
@ JaromandaXの写真は、Webstormがメソッドを認識していないことを示すためにのみ含まれています。私は謝罪します。 – Markoe7
私は理解しますが、コードを助けたい場合は、おそらく間違っている**コードを投稿してください。 jsはあなたのコードです) –