Articles of 会话

会话值无法加载的请求,但加载下一个请求

作为一个节点的新手,我现在越来越困惑了好几天了,我想我再也忍受不住压力了。 所以我觉得我唯一的出路就是在睁开眼睛的时候在这里张贴我的挑战,试图以任何方式,我可以没有任何积极的结果。 我正在使用快递节点,以及express-session和redis来构build我的应用程序。 同时,我正在使用Mysql数据库来存储我的数据,并使用redis来存储会话。 一切似乎正常工作,但问题已经与我的会话variables。 当我在会话中存储一个值,并试图检索它,它不会加载,同时,在控制台中输出的值是完美的。 但是,当我尝试请求其他内容时,则显示以前的会话值。 所以就像之前的会话被加载在当前的请求。 我正在使用把手作为我的模板。 我只是不知道我在做什么错,但都是一样的,这很奇怪。 正如我所指出的,先前的会话值在下一次请求时加载,或者说当前的请求加载先前的会话值。 有什么build议吗?

持续会话连接会话集合

我正在build立一个login系统的网站,我希望用户即使在浏览器closures后也能保持login状态。 只有在用户注销时才销毁会话。 我在网上search了解决scheme,并且遇到了使用connect-session-sequelize的build议。 我阅读了文档,并尽了最大的努力使代码工作,但是我缺乏这方面的经验。 问题: 我的代码没有给我保持一个用户在服务器重新启动后login的结果。 我的代码是: var express = require('express'); var app = express(); var cookieParser = require('cookie-parser'); var session = require('express-session'); var SequelizeStore = require('connect-session-sequelize')(session.Store); var pug = require('pug'); var bodyParser = require('body-parser'); var bcrypt = require('bcrypt'); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static('public')); app.use(cookieParser()); app.set('views', './views'); app.set('view engine', 'pug'); var Sequelize = require('sequelize'); var […]

我如何强制删除会话ID cookie与快速会议?

我正在使用快速会话模块来设置到期年龄的会话。 在这个年龄之后,当页面被刷新时,cookie将被删除。 但是,比如当用户注销时,我想强制删除这个cookie。 我已经使用req.session.destroy.成功销毁了会话req.session.destroy. 我试过使用: res.clearCookie('SID').status(200).send('Page'); 里面req.session.destroy,虽然,如果我在浏览器中查看cookie的详细信息,我看到内容设置为什么都没有,过期date设置为Thursday, 1 January 1970 at 01:00:00,虽然cookie不会删除自己。 我还设置了未unset: 'destroy'会话存储configuration中的unset: 'destroy' ,但这并没有解决我的问题。 中间件: app.use(session({ store: new MemoryStore({ checkPeriod: 86400000 }), cookie: { secure: true, maxAge: 10000 }, secret: secret, resave: false, saveUninitialized: false, name: 'SID', unset: 'destroy' })); 提前致谢。

Express Session与特定路线不同

这是我的快递服务器代码: // app.js const express = require('express'); const app = express(); const logger = require('morgan'); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const session = require('express-session'); app.use(logger('[:date[iso]] :method :url :status :response-time ms – :res[content-length]')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(session({ secret: '…', resave: false, saveUninitialized: false, maxAge: 1000 * 60 * 60 // […]

在快速应用程序之间共享会话(connect-mongodb)

所以我的最终目标是让多个节点应用程序连接到同一个数据库并在用户之间共享会话。 所以,如果你从一个应用程序注销,它会将你从所有的应用程序中注销,login也一样。所以这是在我的开发环境中工作。 我有两个节点快速应用程序连接到同一个Mongo会话数据库,所以我可以login到一个应用程序,另一个自动识别会话并login。我已经推送到我们的活CentOS服务器,并使用PM2和Nginx为它服务。 它目前正在为每个应用程序创build一个新的会话条目。 这两个应用程序使用相同的数据库会话和用户。 我可以在实时会话数据库中看到每个应用程序都有一个单独的会话。 因此,我必须立即login到每个应用程序,而不是一个。 这与Nginx有关,因为这在本地是有效的。 注意:我正在使用connect-mongodb会话 这是我的每个快速应用程序中的main.js文件(除端口#外都相同): var MongoDBStore = require('connect-mongodb-session')(express.session); var configDB = require('./config/database.js'); var env = require('./config/env.js'); if(env.location == 'test'){ var store = new MongoDBStore({ uri: configDB.sessions_url, collection: 'sess' }); }else if(env.location == 'live'){ var store = new MongoDBStore({ uri: configDB.sessions_url_live, collection: 'sess' }); } // Catch errors store.on('error', function(error) […]

React Dev环境创build一个新的Session

当我将React构build部署到NodeJS中时,我有一个简单的NodeJS&React Web应用程序。 当我点击login时,服务器将检查授权并redirect到另一个页面。 当我尝试从React构build(端口3000)运行webapp时,我注意到一旦login,我有一个新的会话,因此从服务器(端口8080)获取数据将无法正常工作。 https://github.com/Yanipo5/MenuCreator NodeJS – loginApi(路由到url将工作); router.post('/',approveUserPassword, function(req, res){ console.log(new Date() + ":" + req.sessionID) if(req.session.auth){ let url = 'http://localhost:3000/edit-menu'; res.redirect(url); } }); function approveUserPassword(req, res, next) { let email = req.body.email; let psw = req.body.psw; let query = "SELECT id FROM Users " + "WHERE email= '" + email + "' AND […]

会话variables被删除

我正在使用express-session在我的NodeJS应用程序中使用Express服务器进行会话处理。 我开发了一个特定端点的API来完成会话处理,保存用户发布的数据等。 我原来用香草HTML / CSS / JS(我所熟悉的)来testingAPI的应用程序的样机。 不过,我后来用React重新编写了前端,打到了我用最初的香草应用程序编写的所有相同的端点。 但是,当我尝试使用React前端将variables保存到快速会话对象时,该variables不会保留在req.session 。 例如,在成功login尝试时,我将包含用户名的uservariables保存到req.session 。 这工作正常,如果我loggingreq.session在这一点上的控制台,我看到对象内的variables。 但是,如果我然后击中另一个端点,并尝试访问req.session.uservariables,它不存在,虽然cookie对象停留在req.session 。 然而,我难住的是,当我使用React应用程序时,这个问题才出现。 当我使用使用静态HTML页面的前端访问同一端点时,可以从任何端点访问来自req.session的uservariables。 这个问题并没有出现,当我最初开发应用程序使用静态HTML页面与链接的JS文件进行AJAX调用发送/接收数据。 React应用程序在向服务器发送数据或从服务器接收数据时没有问题,但是从React应用程序调用服务器代码时执行的方式不同。 在Express应用程序运行的同一个实例中,这两个应用程序的运行方式不同。 我的代码保存uservariables: app.post('/login', (req, res) => { username = req.body.username; password = req.body.password; queryString = 'SELECT * FROM accounts WHERE username = "' + username + '";'; connection.query(queryString, function (err, result) { if(result[0] == undefined){ console.log("user […]

默认情况下,Node.js会话如何处理?

所以,我做了一个基本的设置: app.use(express.session({secret:'abc'})); 我没有安装redis或任何数据库。 默认情况下,Node.js如何处理会话? 他们在哪里存储?

Express.js req.sessionvariables不通过不同的路由存储会话variables

无法req.session variable 。 我将req.session.username设置为someVariable但是我没有定义。 下面的Express设置是否允许我访问每个路由中的req.sessionvariables? app = express.createServer( express.logger(), express.cookieParser(), express.session({ secret: 'keyboard cat' }) ) 快递网站似乎用这种方式。 编辑: 以下是我使用的一些其他代码: if(result[0] != undefined && result[0].Password == req.body.user.pass){ console.log("login successfull"); //Setting in the cookies some variable useful later req.session.userAuthenticated = true; req.session.username = result[0].Username; req.session.projects = result[0].Projects; 这是/login路线的一部分。 在这部分我检查用户是否正确地input了密码,并且是否已经注册。 如果我做一个console.log(req.session.username)我得到login用户的正确用户名。 在另一个路由中,像这样调用它/wathever我检查一个数据库 if(projects[i].name == projectName && projects[i].username == […]

为什么node.js Express框架在设置会话variables时不使用callback?

我已经注意到,为了在会话中存储一个值,您只需调用req.session.key = value,而无需指定callback。 我使用connect-mysql模块将mysql设置为会话存储适配器。 所以我想知道每次我保存一个值的会话,它正在更新的分贝,不应该有一个callback与此相关? 然而,在我看来,人们正在愉快地同步使用它。 有人可以解释为什么这种情况? 谢谢。