[英]Check if the user is logged in or not using session and node.js
我對node.js
和express-session
很node.js
。 我正在嘗試實現登錄/注冊系統。 如果用戶已登錄,我將允許他們訪問以查看諸如記分板的某些頁面,否則(用戶未登錄或注冊)我想將他/她重定向到登錄/注冊頁面。
這是我的代碼:
router.post('/login', (req, res) => {
var email = req.body.email;
var password = req.body.password;
userModel.authenticate(email, password, (err, user) => {
if (err) {
console.log(err)
}
else if (!user) {
console.log('Wrong Password')
}
else {
req.session.userId = user._id;
console.log(req.session.userId);
res.redirect('/user/scoreboard')
}
})
});
router.post('/register', (req, res) => {
var newUser = {
teamName: req.body.teamName,
faculty: req.body.faculty,
email: req.body.email,
password: req.body.password
}
userModel.create(newUser, (err, user) => {
if (err) {
console.log('[Registratoin]: ' + err);
} else {
req.session.userId = user._id;
console.log('[Registration]: Done');
// req.session.userID = user._id;
res.redirect('user/scoreboard')
}
});
});
router.get('/scoreboard',async (req, res) => {
console.log(req.session.userId)
if (req.session.userId) {
const teams = await userModel.find({}).sort('-score')
const faculties = await userModel.aggregate([{
"$group": {
_id: "$faculty",
average: {
$avg: "$score"
}
}
}]).sort("-average")
res.render('main/scoreboard', {
teamInformation: teams,
finalResult: faculties
})
}
else {
res.redirect('/')
}
});
這是我的前端功能:
function registration() {
$.post('/user/register', {
teamName: $('#teamName').val(),
faculty: $('#faculty').val(),
email: $('#emailSignUp').val(),
password: $('#passwordSignUp').val()
}).done(
history.pushState(null, null, "user/scoreboard")
)
}
function login() {
$.post('/user/login', {
email: $('#emailSignIn').val(),
password: $('#passwordSignIn').val()
}).done(() => {
history.pushState(null, null, "user/scoreboard")
})
}
每當我注冊新用戶時,頁面就會重新加載!
不幸的是,我不知道問題出在哪里(從服務器端或前端實現)。 我該如何調試?
看來是因為您使用了“ submit
按鈕,頁面才自動重新加載。
我建議您將輸入類型更改為button
並添加,然后按照以下說明進行操作:
<input type="button" value="ورود" onclick="login()"/>
function login() {
$.post('/user/login', {
email: $('#emailSignIn').val(),
password: $('#passwordSignIn').val()
}).done(() => {
window.location.assign('/user/scoreboard')
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.