gpt4 book ai didi

node.js - 如何使用快速 session

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:35 25 4
gpt4 key购买 nike

我是一名快速新生,我现在遇到了 session 问题。这段代码我无法存储 View 。 req.session.user 未定义,也许问题是 session 未存储。我的代码有什么问题,请告诉我我的错误,谢谢

var express = require('express');
var bodyParser = require('body-parser');
var expressSession = require('express-session');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
app.use(expressSession({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
var auth = function(req, res, next) {
console.log(req.session.user); **this is undefined**
if (req.session && req.session.user === "amy" && req.session.admin)
return next();
else
return res.sendStatus(401);
};
app.get('/login', function (req, res) {
if (!req.query.username || !req.query.password) {
res.send('login failed');
} else if(req.query.username === "amy" || req.query.password === "amyspassword") {
req.session.user = "amy";
req.session.admin = true;
res.send(req.session.user);
}
});
app.get('/logout', function (req, res) {
req.session.destroy();
res.send("logout success!");
});
app.get('/content', auth, function (req, res) {
res.send("You can only see this after you've logged in.");
});
app.listen(3000);

最佳答案

尝试使用以下代码,而不是使用快速 session 的当前代码。

app.use(expressSession({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}));

secure: true 尽管推荐的选项需要启用 https 的网站。 HTTPS 对于存储安全 cookie 是必需的。如果您在使用仅 HTTP 站点而不使用 HTTPS 时将该选项设置为 true,则不会设置 cookie,这就是您遇到问题的原因。 GitHub repo for express-session有一些关于此的更多详细信息。

因此将您的代码更改为应该有效。如果这没有意义或者仍然给您带来问题,请告诉我。

编辑

还可以在 get /login 路由中尝试以下代码行:

res.send(req.session.user);

对此:

res.redirect('/content');

编辑2

要不让它自动重定向,但仍保存 session ,请尝试下面的代码。

req.session.save();
res.send("test");

关于node.js - 如何使用快速 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com