У меня есть procjet, который позволит только администратору размещать и входить в систему без имени пользователя или регистрации. Так что я просто использовал пароль. Но там, где я собираюсь, проблема, которую я и некоторые из моих друзей, связанных с этими кодировками, не могли решить. На эту страницу я ссылался на код, и проблема та же: NodeJS -Паспорт JS Предоставление определенного пароля
Я использовал паспорт. js, nodejs и express. js с шаблоном мопса.
Это мой пользователь. js модель:
const mongoose = require('mongoose');
const UserSchema = mongoose.Schema({
password:{
type: String,
required: true
}
});
const User = module.exports = mongoose.model('User', UserSchema);
Это мой паспорт. js
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
const config = require('../config/database');
const bcrypt = require('bcryptjs');
module.exports = function(passport){
// Local Strategy
passport.use(new LocalStrategy(function(password){
let query = {password:password};
User.findOne(query, function(err, user){
if(err) throw err;
if(!user){
return done(null, false, {message: 'No user found'});
}
// Match Password
bcrypt.compare(password, user.password, function(err, isMatch){
if(err) throw err;
if(isMatch){
return done(null, user);
} else {
return done(null, false, {message: 'Wrong password'});
}
});
});
}));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
}
Это мои пользователи. js
const express = require("express");
const router = express.Router();
const bcrypt = require('bcryptjs');
const passport = require('passport');
let User = require('../models/user');
// Register Form
router.get('/login', function(req, res){
const password = req.body.password;
req.checkBody('password', 'Password is required').notEmpty();
let errors = req.validationErrors();
res.render('login');
});
router.post('/login', function(req, res, next){
passport.authenticate('local', {
successRedirect:'/',
failureRedirect:'/users/login',
failureFlash: true
})(req, res, next);
});
// logout
router.get('/logout', function(req, res){
req.logout();
req.flash('success', 'You are logged out');
res.redirect('/login');
});
module.exports = router;
Также в db я создал коллекцию под названием user ", потому что когда я пытался сделать это с помощью своего кода, я узнал пользователя Может быть, проблема может быть в пользователе. js (Модели) или паспорт. js это моя коммандная строка mongodb:
db.createCollection('users');
...
db.users.insert{(password:'123'});
...
Мне нужна ваша помощь, пожалуйста, это моя школьная домашняя работа, и я Я обещал выполнить это обещание. Пожалуйста, помогите мне. Как можно решить эту проблему?