我们正在为我们的编程课程开发一个项目。我们正在做一个非常小的社交媒体平台,您可以在其中注册,登录,创建个人资料,查看事件并注销。
因此,我设置了用于登录的会话变量,但我也希望注册的人能够立即登录并重定向到个人资料站点。所以我想我必须在注册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-部分,但是我不知道如何编写。我正在使用Node js,Express和sqlite3 ...
谢谢!
答案 0 :(得分:0)
为什么不这样做:
// 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
}
答案 1 :(得分:0)
我可以建议您的最好方法是,注册成功后,在会话中设置用户详细信息,然后直接重定向到您的主页