Как добавить сеанс в Node js - PullRequest
0 голосов
/ 14 ноября 2018

мы работаем над проектом для нашего курса программирования. У нас очень маленькая социальная платформа, где вы можете зарегистрироваться, войти, создать профиль, просмотреть события и выйти.

Итак, я установил переменную сеанса для входа в систему, но я также хочу, чтобы люди, которые регистрируются, мгновенно входили в систему и перенаправлялись на сайт профиля. Так что я должен установить еще одну сессию в app.post, я думаю, но я совершенно не представляю, как это сделать (потому что я чертов начинающий) ... Кто-нибудь может помочь? Это код до сих пор:

//------------Sessionvariables---------------//
app.get('/', requiresLogin, function(req, res) {
    res.render('home', {
        'username': req.session.user.name
    });
});

app.post('/sendLogin', function(req, res) {
    //in Datenbank gucken
    const user = req.body["username"];
    const password = req.body["password"];
    db.get(`SELECT * FROM users WHERE username='${user}'`, function(err, row) {
        if (row != undefined) {
            if(password == row.password) {
                req.session['user'] = user;
                res.redirect('/home');
            }else{
                res.redirect('/loginerror');
            }
        }else{
            res.redirect('/loginerror');
        }
        if(err){
            console.error(err.message);
        }
    });
});

app.get('/logout', function(req, res){
    req.session.destroy(function (err) {
      if (err) return next(err)
        req.session = null;
      res.redirect('/start-login');
    });
});

// Registration
app.post('/registration', function(req, res) {
    const { email, password, username, domicile } = req.body;
        // validation
    db.run(`INSERT INTO users(email,password,username,domicile) VALUES(?, ?, ?, ?)`, [email, password, username, domicile], function(err) {
         if (err) {
             return console.log(err.message);
         }
         return res.redirect('/edit_profile');
     });
});

Я знаю, что мне нужно записать сессию в app.post / registration - Part, но я не знаю, как это записать. Я использую Node js, Express и sqlite3 ...

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

лучший способ, который я могу вам предложить, это то, что после успешной регистрации задайте данные пользователя в сеансе и просто перенаправьте на свою домашнюю страницу

0 голосов
/ 14 ноября 2018

Почему бы просто не сделать:

// Registration
app.post('/registration', function(req, res) {
    const { email, password, username, domicile } = req.body;
        // validation
    db.run(`INSERT INTO users(email,password,username,domicile) VALUES(?, ?, ?, ?)`, [email, password, username, domicile], function(err) {
         if (err) {
             return console.log(err.message);
         } else {
             // Create the session / save any data you want here
             req.session.user.name = username;
             /* I would actually call somthing like: createSession(req)
                dedicated function that nicely creates the session */
             // Redirect to home just like you do after successful login
             res.redirect('/home'); // Redirect to home since user registered successfully
         }
     });
});

Кстати, всегда обрабатывайте ошибки перед запуском другой логики кода. Я вижу, что вы обрабатываете ошибки в конце кода (в app.post('/sendLogin',...):

if(err){
  console.error(err.message);
}

Напишите так:

if(err){
  console.error(err.message);
  // and res.end() or similar if its in an express route
} else {
  // Do safe stuff here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...