簡體   English   中英

Passport.js 通過 Post 請求獲取當前登錄的用戶

[英]Passport.js get currently logged in user through Post request

我遇到了 Passport.js 的問題,我想從 Post 請求中獲取當前登錄的用戶信息並處理一些內容。 當我 console.log(req.user) 出現時,它顯示為“未定義”。 設置和身份驗證一切正常,我還可以使用從第一個代碼片段中看到的 Get 請求檢索用戶信息。

router.get('/', function(req , res){
    console.log("The current logged in user is: " + req.user.first_name);
    res.render('index.ejs' , {
        user: req.user
    });
});

^ 按預期返回用戶名

router.post('/testPost' ,function(req , res){
    console.log("The current logged in user is: " + req.user);
    res.json({
        status: "success" 
     });
});

^即使用戶登錄也返回未定義。

兩年前,我在這里看到了同樣的問題How to get req.user in POST request using passport js ,但沒有答案。

這是因為用戶在您檢查時可能沒有登錄。

為確保用戶在訪問路由時已登錄,您應該有一個中間件來為您檢查它。

如果需要,您可以將其編寫為單獨的模塊並將其導入到您的每條路線中。

模塊:

module.exports = {
    EnsureAuthenticated: (req, res, next) => {
        if (req.isAuthenticated()) {
            return next();
        } else {
            res.sendStatus(401);
        }
    }
};

路線:

//Destructuring | EnsureAuth Function
const {
    EnsureAuthenticated
} = require('../path/to/the/module');


//You should get your user here
router.get('/', EnsureAuthenticated, (req, res) => {
console.log(req.user)
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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