簡體   English   中英

快速會話授權

[英]Express-session Authorization

我是express.js的新手,在您登錄后嘗試創建會話cookie。我能夠啟動會話,並且能夠成功登錄,但是會話似乎沒有進入下一個目錄。 在開始會議之前,我沒有包括bodyparser-thingy。

router.use(bodyParser.json());

router.use(bodyParser.urlencoded({ extended: true }));

router.use(session({
name:   "authorization",
secret: "secret",
saveUninitialized: false,
resave: false,
cookie: {
    secure: true,
    httpOnly: true,
    maxAge: 1000 * 60 * 60 * 24,
},
}));

    router.route("/login")
        .get(function(request, response) {

    response.render("../views/partials/login");
})

.post(function(request, response, next) {

    let username = request.body.username;
    let password = request.body.password;

    User.findOne({user: username}, function(err, user) {
        if (err) {
            throw err
        }

        // test password if matching
        if (user !== null) {
            user.comparePassword(password, function(err, match) {
                if (err || !match)
                }

                request.session.user = username;     // These seems to not follow
                request.session.password = password;
            });
        } else {
            response.redirect("/login");
        }
    });

});

但是當我重定向到“ / home”時,request.session.user返回未定義

request.session.user -> undefined

function restrict(req, res, next) {
    if (req.session) {
        next();
    } else {
        req.session.error = "Access denied!";
        res.sendStatus(403);
    }
}
router.route("/home")
.get(restrict, function(request, response) {
    console.log(request.session.user) ---> undefined

為什么Cookie中沒有任何用戶?

抱歉,這是一個nooby問題。

(PS我不想使用任何平台,例如護照等。)(PSS我知道錯誤處理不是最好的方法,但這是暫時的)

關於cookie.secure標志,來自文檔:

將其設置為true時請注意,因為如果瀏覽器沒有HTTPS連接,則兼容的客戶端將來不會將cookie發送回服務器。

根據您的評論,您不使用https連接,並且cookie也不會發送到服務器。

暫無
暫無

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

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