Я получаю 401 ошибку «Несанкционированный», несмотря на то, что пользователь сохраняется в БД - PullRequest
0 голосов
/ 12 июня 2019

Я получаю 401 «Несанкционированный», отправленный даже при создании нового пользователя.

Я много раз пытался рефакторинг своего кода и проверял SO, а также Google, но безуспешно.

user.js

const mongoose = require("mongoose");
const passportLocalMongoose = require('passport-local-mongoose');

const userSchema = new mongoose.Schema({
    username: String,
    password: String
});

userSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model('User', userSchema);

auth.js

const express = require("express");
const router = express.Router();
const passport = require('passport');
const session = require('express-session');

router.use(session({
    secret: process.env.SECRET,
    resave: false,
    saveUninitialized: false
}));

router.use(passport.initialize());
router.use(passport.session());

const User = require("../models/user");

passport.use(User.createStrategy());

passport.serializeUser(User.serializeUser())
passport.deserializeUser(User.deserializeUser());

router.get('/register', (req, res) => {
    res.render('register', { title: 'Casa Lugano Immobiliare SA | Registrati' });
})

router.post('/register', (req, res) => {

    User.register({ username: req.body.username }, 'password', (err, user) => {
        if (err) {
            console.error(err);
            res.redirect('/register');
        } else {
            passport.authenticate('local')(req, res, () => {
                console.log('user authenticated')
                res.redirect('/');
            })
        }
    })
});

module.exports = router;

app.js

mongoose.connect('mongodb://localhost:27017/DB', { useNewUrlParser: true });

//REQUIRING ROUTES
const authRoute = require("./routes/auth");
app.use(authRoute);

Я бы хотел, чтобы пользователь прошел аутентификацию после регистрации!Я застрял на много часов, поэтому любая помощь будет очень признательна!

1 Ответ

0 голосов
/ 12 июня 2019

Я нашел ошибку, мне нужно было передать только объект User вместо имени пользователя:

User.register({ username: req.body.username }

становится:

const newUser = new User({ username: req.body.username });
    User.register(newUser, req.body.password, function (err, user) { [...]

Спасибо за внимание!

...