簡體   English   中英

檢查用戶是否使用session和node.js登錄

[英]Check if the user is logged in or not using session and node.js

我對node.jsexpress-sessionnode.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM