Проблема со входом в JWT

Я использую JWT с паспортом для аутентификации в своем приложении. Я использую MongoDB и Mongoose для базы данных. Я добавил пользователя с username = manager и password = manager с функцией addManager, пароль, сохраненный в db, не является «менеджером», а: «$ 2b $ 10 $ O7YAgTJKETOY.lanZoErWum2e6ZPpVi.RjMp0VHKfMT82z9uEmrlS« Я не знаю почему! и я не могу войти с паролем: "менеджер". Я не знаю, в чем проблема. Я использовал эта статья для своего кода. если вы понимаете, что не так, скажите мне.

app.js:

//settings and Requirements
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const path = require('path');
const mongoose = require('mongoose');
const passport = require('passport');
const config = require('./api/config/database');
mongoose.connect(config.database);
let db = mongoose.connection;
require('./api/config/auth');
db.once('open', function () {
    console.info('connected to mongodb...');
});
db.on('error', function (error) {
    console.info(error);
});
let User = require('./api/models/user');
let basics = require('./api/config/basics');
let port = process.env.PORT || 8080; 
const app = express();
app.use(bodyParser.urlencoded({
     extended: false
}));
app.use(bodyParser.json());
app.use(bodyParser.json({
   type: 'application/vnd/api+json'
}));
app.use(cookieParser());
basics.addManager(basics.manager);
router(app);

app.listen(port, function (err) {
    if (err)
    console.info(err);

    console.info("port is " + port);
});

auth.js:

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../../api/models/user');
const passportJWT = require("passport-jwt");
const JWTStrategy   = passportJWT.Strategy;
const ExtractJWT = passportJWT.ExtractJwt;

passport.use(new LocalStrategy({
    usernameField: 'username',
    passwordField: 'password'
}, 
function (username, password, cb) {
    //this one is typically a DB call. Assume that the returned user object is pre-formatted and ready for storing in JWT
    return User.findOne({username:username, password:password})
       .then(user => {
           if (!user) {
               return cb(null, false, {message: 'Incorrect username or password.'});
           }
           return cb(null, user, {message: 'Logged In Successfully'});
      })
      .catch(err => cb(err));
}
));

passport.use(new JWTStrategy({
    jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
    secretOrKey   : 'your_jwt_secret'
},
function (jwtPayload, cb) {

    //find the user in db if needed. This functionality may be omitted if you store everything you'll need in JWT payload.
    return User.findOneById(jwtPayload.id)
        .then(user => {
            return cb(null, user);
        })
        .catch(err => {
            return cb(err);
        });
}
));

Authenticate.js:

const express = require('express');
const passport = require('passport');
const jwt = require('jsonwebtoken');

const router = express.Router();

router.post('/login', function (req, res, next) {
    console.info(req.body);
    passport.authenticate('local', {session: false}, (err, user, info) => {
        console.info(user);
        if (err || !user) {
            return res.status(400).json({
                message: info ? info.message : 'Login failed',
                user   : user
            });
        }
       req.login(user, {session: false}, (err) => {
           if (err) {
               res.send(err);
           }
           // generate a signed son web token with the contents of user object and return it in the response
           const token = jwt.sign(user, 'your_jwt_secret');
           return res.json({user, token});
        });
    })(req, res);
});

module.exports = router;

addManager: `

addManager : function(manager){
        let newUser = new User({
            username : manager.username,
            password : manager.password,
            isManager : true
        });
        newUser.save(function(err , user){
            if (err)
                console.info(err);
            console.info('manager added successfuly');
        });
    }

`

Бро, опубликуйте минимальный код, необходимый для демонстрации вашей проблемы.

basic 13.07.2018 15:34

Много кода и мало текста. Кажется, единственный вопрос: «Почему пароль сохраняется именно так, а не в виде открытого текста?» верно? И в результате этой проблемы вы не можете проверить пароль и, следовательно, токен не создан, верно?

jps 13.07.2018 15:51

Привет. да именно в этом моя проблема. Извините, я подумал, что нужно скопировать сюда все коды.

Nastaran Heydari 13.07.2018 16:37

Ваш пароль хеширован, поэтому пароль не будет «менеджер»

Prajval M 13.07.2018 16:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
53
0

Другие вопросы по теме