私は質問を編集します。誰かがこのコードを修正して私を助けてくれますか?私はパスポートを使ってログインシステムの作成についてユーチューブでガイドを休耕していますnode.jsのパスポート
は、私は彼女が呼び出されたときに機能
passport.use(new LocalStrategy(
についてはこちらを理解しない、そしてそれは、引数のログイン、パスワードを取得する場所から。
ユーザ・モデル
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
login: { type: String, maxlength: 20, required: false },
password: { type: String, maxlength: 202, required: false },
updated: { type: Date, default: Date.now },
created: { type: Date, default: Date.now }
});
module.exports = mongoose.model('User', UserSchema);
module.exports.comparePassword = function(candidatePassword, hash, callback){
bcrypt.compare(candidatePassword, hash, function(err, isMatch) {
if(err) throw err;
callback(null, isMatch);
});
}
module.exports.getUserById = function(id, callback){
User.findById(id, callback);
}
ユーザーモデル
var express = require('express');
var MongoClient = require('mongodb').MongoClient;
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var Product = require('../../model/product.model');
var Category = require('../../model/category.model');
var mongoose = require('mongoose');
var User = require('../../model/user.model');
var _ = require('lodash');
var bcrypt = require('bcrypt');
const saltRounds = 10;
router.post('/create', function (req, res, next) {
var newUser = {
login: req.body.login,
password: req.body.password
}
console.log(req.body)
req.checkBody('login', 'Login is required').notEmpty();
req.checkBody('password', 'Password is required').notEmpty();
var errors = req.validationErrors();
if (errors) {
console.log(errors)
res.send(errors);
} else {
bcrypt.hash(newUser.password, saltRounds, function (err, hash) {
if (err) {
console.log(err)
} else {
newUser.password = hash;
var user = new User(newUser);
user.save()
.then(function (User) {
res.send(User);
})
}
});
req.flash('success_msg', 'You are registered and can now login');
//res.redirect('/');
}
});
passport.use(new LocalStrategy(
function(login, password, done) {
User.findOne({ login: login }, function(err, user){
if(err) {
console.log(err);
}
if(!user) {
return done(null, false, {
message: 'Unkown User'
})
}
});
User.comparePassword(password, user.password, function(err, isMatch){
if(err) throw err;
if(isMatch){
return done(null, user);
} else {
return done(null, false, {message: 'Invalid password'});
}
});
}));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.getUserById(id, function(err, user) {
done(err, user);
});
});
router.post('/login', function (req, res, next) {
console.log(req.body)
passport.authenticate('local', { successRedirect: '/', failureRedirect: '/', failureFlash: true }),
function (req, res) {
res.redirect('/product/list')
}
})
module.exports = router;
特に[docs](http://passportjs.org/docs)で理解できないことがある場合は、そのことを明示する必要があります。私たちは推測をしません。 –
私は主な利用状況を理解できませんが、私はPassportを使ってログインシステムをしようとしていますが、彼が何をしているのか分かりません。 – Turqus
また、私たちは本当にそれを行うことができないので、あなたのニーズに合った幅広い仕立てた説明を作成しません。あなたのコメントでも、あなたが取り組んでいることややろうとしていることについての詳細は追加されていません。 「PassportがNode.js用の認証ミドルウェア」という部分を理解していない場合でも、ここでの質問以上のものが必要になります。さらなる学習と研究を行うこと、または他のウェブサイトで助けを求めることを検討してください。 –