Tag: express session

即使MongoStore使用connect-mongo,Express会话也不会持久

当我重新启动我的服务器,我的会话结束,我注销。 这不会在常规页面刷新上发生。 我正在使用connect-mongo来解决这个问题: var session = require('express-session'); const MongoStore = require('connect-mongo')(session); 以下是我用来存储会话的代码,重用了一个名为thisDb的现有Mongo连接: app.use(session({ secret: secretHash, saveUninitialized: true, resave: true, secure: false, store: new MongoStore({ db: thisDb }) })); 在成功login期间: var day = 60000*60*24; req.session.expires = new Date(Date.now() + (30*day)); req.session.cookie.maxAge = (30*day); 在我的Mongo shell中,我可以validation在login时是否创build了新的会话: db.sessions.find() {"cookie":{"originalMaxAge":2592000000,"expires":"2017-11-17T20:36:12.777Z","httpOnly":true,"path":"/"},"user":{"newNotifications":false,"username":"max","admin":"true","moderator":"true"},"expires":"2017-11-17T20:36:10.556Z"}

Express会话variables不会在请求中持续存在

我正在使用express-session模块来获取在Express Node.js项目中工作的会话variables。 我没有得到任何错误,并设置会话variables似乎工作,但他们不持续请求。 以下是我的代码的一个简单的部分: server.js var express = require('express'); var bodyParser = require('body-parser'); var session = require('express-session'); var app = express(); app.use(bodyParser.json()); // Sessions app.use(session({ secret: config.secret })); app.use('/api/projects', require('./controllers/api/projects')); var server = app.listen(3000, function() { console.log('Server listening on', 3000) }); api / projects.js路由器 var router = require('express').Router() router.get('/set', function(req, res, next) { req.session.test = […]

内部500错误 – Node.js – 快速会话

出于某种原因,当我编译我的服务器时,在所有path上出现500错误: info: [c:\Users\PC\WebstormProjects\practice\app.js] Express is listening on port: 3000 GET / 304 13.601 ms – – GET /css/bootstrap.css 500 5.725 ms – 1028 GET /js/jquery.js 500 3.748 ms – 1028 GET /js/bootstrap.js 500 4.097 ms – 1028 GET /favicon.ico 500 1.889 ms – 1028 我一直玩的唯一的东西是“快速会议”。 我有一些我正在遵循的教程,但它们都是针对较旧的快速版本,因此我必须重新编写一些内容,而且我甚至没有做太多的工作,但初始化了会话。 唯一改变了我的app.js: var session = require('express-session'); var MongoStore = require('connect-mongo')(session); […]

快速会议无法设置未定义的属性“ID”

var redis = require('redis'); var router = express.Router(); var mysql = require('mysql'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var client = redis.createClient(); var session = require('express-session'), RedisStore = require('connect-redis')(session); var app = express(); app.use(cookieParser); app.use(session({ store : new RedisStore({ host:'localhost', port:7351, maxAge: 300000, client:client, ttl:260 } ), secret:'dafdsa', resave:false, saveUninitialized:true, })); 这是我的设置,这是我的代码 router.post('/', […]

请求cookie不按预期方式返回快速会话数据

我正在尝试构build一个基本的loginfunction,并testing它是否会创build一个稍后可以使用的会话。 我正在使用express-session和redis来保存会话数据。 这是我的设置: app.use(bodyParser.json()) app.use(bodyParser.urlencoded({extended: true})) app.use(express.static(path.join(__dirname, 'client/build'))) app.use(cookieParser(process.env.COOKIE_SECRET)) app.use(session({ store: new redisStore({ host: '127.0.0.1', port: 6379 }), secret: process.env.SESSION_SECRET, cookie: {maxAge: 1800}, name: 'appName', resave: false, saveUninitialized: false })) app.use('/', routes) 然后我的login路线: router.post('/api/login', (req, res) => { req.session.userId = req.body.id req.session.email = req.body.email //do I need to send out a cookie with the session […]

从Knex中检索连接池(与express-mysql-session共享)

我已经configuration了knexconfiguration使用MySQL的池: var knex = require("knex")({ client: "mysql", connection: { host: …, user: …, password: …, database: … }, pool: { min: 0, max: 20 } }); 我也使用快速会议 ,我正在计划切换到商店express-mysql-session 。 所以,我想使用knex创build的连接池,所以我可以使用相同的池来访问所有数据库。 有没有办法从knex获得连接池,我可以传递给MySQL会话存储的构造函数? 或者其他方式来使用相同的一切?

快速会话和令牌在一个项目中

我需要express-session和jwt的解释。 例如,我有购物车,并login和login我使用jwt,但存储在购物车中select的产品我想使用express-session和connect-mongo是正确的方法吗? 我的问题是在一个项目中使用会话和jwt的正确和合理的解决scheme? 也许更好的是使用jwt来存储产品,例如3小时。

通过_id转换错误手动删除connect-mongo会话

我正尝试从connect-mongo会话集合中手动删除一个文档。 当我尝试删除文档时出现以下错误: 消息:“投射到ObjectId失败值”gl9-V-bjAjqv2Nwdf9vHPLN_Fnnl4Thz“path”_id“ 快速会话使用以下函数来生成会话ID: function generateSessionId(sess) { return uid(24); } 从这个函数生成的会话正在进入会话文档的_id属性。 但是,当您尝试通过生成的标识查找或删除文档时,您会收到错误消息。 mongodb文档说_id应该是 ObjectId是一个12字节的BSONtypes的ObjectId 我已经尝试使用会话中的genid选项覆盖会话ID,但覆盖不会将其放入数据库中。 我怎样才能得到一个有效的_id到文档上或用无效的_id查询文档? 谢谢! 我的基础架构 :Express 4.10,Node v0.12.7,Compose.io,connect-mongo,express-session

如果Session cookie是安全的,则CSURF不起作用

当我将cookie设置为安全的时候,我很难过,节点的csrf不起作用。 //Load Cooike Parser app.use(cookieParser(secret)); //Load Session Store app.use(require('express-session')({ secret:secret, cookie:{ maxAge: 1000 * 60 * 60 * 24, // 1 day, secure: true, httpOnly: true }, store: sessionStore })); //Load POST data parser //Form sent should be in JSON format app.use(bodyParser.json()); //Initiate CSRF on middleware //set the CSRF cookie Header app.use(csrf()); app.use(function(req,res,next){ res.cookie('XSRF-TOKEN',req.csrfToken()); next(); […]

Mongoose – 通过findOne()search模式失败

在通过MongoDB设置一个sessionStore来进行express-session ,我使用findOne()函数来validation用户的信息是否有效和最近有点麻烦。 var session = require('express-session'); var mongoStore = require('connect-mongo')(session); var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Session = mongoose.model('session', new Schema({ sid : String, username : String, email : String })); … 诀窍是, express-session和connect-mongo负责pipe理对数据库的写操作。 app.use(session({ secret: 'secretsquirrel', resave: true, saveUninitialized: true, store: new mongoStore({ mongoseConnection: mongoose.connection, host: '127.0.0.1', port: '27017', db: 'testdb', […]