@Aleksandr19_93

Авторизация пользователя node + express?

0

Я начал изучать Node.js и начал делать авторизацию пользователей, но попал в тупик. Вот что я хочу реализовать:
- пользователь входит в систему
- перенаправляет его на страницу пользователя
- данные об отпуске пользователя отображаются на странице пользователя
Но я застрял на последнем пункте. Как я могу передать req.session.user в запрос get или есть другой способ? Вот мой код:
index.js
const express = require( 'express' );
const db = require( './db' );
const session = require('express-session')
const MongoStore = require('connect-mongo')(session)
const bodyParser = require( 'body-parser' );
const config = require( '../etc/config.json' );
const cors = require( 'cors' );

const controller = require( './controller/controller' );

const app = express();

app.use(session({
  store: new MongoStore({ url: 'mongodb://localhost/employees' }),
  secret: 'QwqYTDHJGDhGHGSDJghhsdghjGJHGdJH',
  saveUninitialized: false,
  resave: false
}));

app.use( bodyParser.json() );
app.use( express.static(__dirname) );
app.use( cors({ origin: '*'}) );

db.connect('mongodb://' + config.db.host + ':' + config.db.port + '/' + config.db.name , {
  useNewUrlParser: true
}, function(err){
    if(err) return console.log(err);
    app.listen(config.serverPort, function(){
        console.log("Сервер ожидает подключения...");
    });
  });
  function loadUser(req, res, next) {
    controller.checkUser(req.body)
      .then(function(user){
        if(user){
          req.session.user = {id: user._id, name: user.login}
          res.send(req.session.user)
        }
      })
      .catch(function(error){
        return next(error)
      })

  }

  app.get("/", ( req, res ) => {
    controller.vacationList().then( data => res.send(data) );
});

app.post("/", ( req, res ) => {
  controller.vacationCreate(req.body).then( data => res.send(data) );
});

app.put('/:id', function (req, res){
  controller.vacationChange(req.params.id, req.body).then( data => res.send(data) );   
});

app.delete("/:id", ( req, res ) => {
    controller.vacationDelete(req.params.id).then( data => res.send(data) );
});

app.post('/user', loadUser);


controller.js

const User = require( '../models/User' );
const ObjectID = require( 'mongodb' ).ObjectID;

exports.vacationList = function(userData) {
    console.log(userData)
    return User.find();
};

exports.vacationCreate = function(data) {
    const user = new User ({
        login: data.login,
        password: data.password,
    });
    return user.save();
};

exports.vacationDelete = function(id) {
    return User.findById(id).remove();
};

exports.checkUser = function(userData) {
    return User
        .findOne({login: userData.login, password: userData.password})
}
  • Вопрос задан
  • 378 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexanderK-A
@AlexanderK-A
UTC+10
Доброго дня!

Видимо, вам нужно возвращать какую-то html-страницу обратно пользователю, и на эту страницу предварительно отрисовывать то, что нужно.
Для этого можно использовать один из многочисленных шаблонизаторов.

res.render(viewName, {userData: req.session.user});
Ответ написан
Комментировать
@Aleksandr19_93 Автор вопроса
Проблема решена, ошибка была на стороне front-end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы