Articles of 快速会话

添加到Node.js express-session的variables在下一个请求中是未定义的

我正在实现一个简单的loginfunction并将数据存储在快速会话中,但无法恢复。 在login函数中的loginDb.js文件中,我将用户ID存储在会话variables中,并且在getLoginStatus函数中,我试图访问userId,但是它的callback是未定义的。 我已经经历了许多与类似问题有关的post,但对我来说没有任何帮助。 不知道我在这里做错了什么。 下面是代码。 server.js var express = require('express'); var pg = require('pg'); var cookieParser = require('cookie-parser'); var bodyparser = require('body-parser'); var session = require('express-session'); var path = require('path'); const port = 3000; const loginroute = require('./Routes/login'); var app=express(); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(session({ secret: 'This is a secret', resave: true, saveUninitialized:true, […]

快速会话不保存nodejs

这个简单的例子不起作用。 在每个请求中,会话都是重新创build的,我不知道如何解决它。 var express = require('express'), expressSession = require('express-session'), app = express(); app.use(expressSession({ secret:'secret', resave:true, saveUninitialized:true, cookie:{ httpOnly:false, expires:false } })); app.all('/',function(req,res,next){ var session = req.session; if(session.count){ session.count++; } else{ session.count = 1; } console.log('id:',req.sessionID); console.log('count:',session.count); res.end(); }); app.listen(9090); console.log('server is running at http://localhost:9090'); 我试图保存请求的数量,但会话是在我每次提出请求时创build的。 //request >GET http://localhost:9090 //response id: gOqbVisxaW34qafRdb7-6shqYV0UurRg count: 1 //request again […]

无法在node.js中使用会话

我正在开发login页面。 如果用户成功login,那么我想将user_Id存储到会话variables中,我将用它来authentication其他页面。 App.js var express = require('express'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var passport = require('passport'); var cookieParser = require('cookie-parser'); var session = require('express-session'); app.use(bodyParser.json()); app.use('/user', userRoutes); app.use('/', index); app.use(cookieParser()); app.use(session({ secret: "helloKey", resave: false, saveUninitialized: true, store: new MongoStore({ mongooseConnection: mongoose.connection}), cookie: { maxAge: 180 * 60 * 1000 } })); […]

页面刷新后NodeJS快速会话过期

每次刷新页面时,我的nodejs应用程序的会话都将过期,login后。 如果我访问不同的页面,它确实工作正常,但只要刷新页面,会话结束。 我尝试了几件事情,但似乎没有任何工作。 即使在页面刷新后,我怎样才能防止它过期? 如果我可以将会话存储在数据库或其他地方,以防止它过期。 这里是文件 护照init.js var mongoose = require('mongoose'); var User = mongoose.model('user'); var localStrategy = require('passport-local').Strategy; var bcrypt = require('bcrypt-nodejs'); module.exports = function(passport) { passport.serializeUser(function(user, done) { console.log('serializing user:',user.username); done(null, user._id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { if(err) { done(500,err); } console.log('deserializing user:',user.username); done(err, user); }); }); passport.use('login', new localStrategy({ […]

使用express 4和socket.io在node.js中进行会话

我想在会话中坚持一些数据。 我正在使用MongoDB作为会话存储。 我准备了简单的代码,来做到这一点。 但是,这是行不通的。 我得到这个错误: types错误:无法设置未定义的属性'myVariable' 这是我的代码: var express = require('express'); var app = require('express')(); var http = require('http') var server = require('http').Server(app); var io = require('socket.io')(server); var get_ip = require('ipware')().get_ip; var Sequelize = require('sequelize'); var url = require("url"); var crypto = require('crypto'); var cookieParser = require('cookie-parser'); var Session = require('express-session'); var MongoStore = require('connect-mongo')(Session); […]

使用express-sessions和knex使所有用户会话无效

我已经inheritance了需要更新的Express站点。 有一条重置密码的途径,但是当这种情况发生时,我需要使所有的用户会话失效,并允许同时在当前浏览器上自动login。 我对Express很有点新意,所以有人能指点我的方向吗? build立sessionStore: const sessionStore = knexSession(session) const store = new sessionStore({ knex: db }) app.use(session({ secret: sessionKey, resave: false, saveUninitialized: false, store, cookie: { maxAge: null, httpOnly: true, secure: app.get('env') !== 'development' || app.get('port') === 443, } })) 重置密码: let data = { password, token: null, expires: null } return models.user.update(user.id, user.id, data) […]

如何通过MongoStore查找存储在Mongo中的会话?

我正在使用Express-session和护照和MongoStore来存储我的会话。 他们显然被存储在MongoDB中,我怎么才能访问它们只是为了看看? 没有商业价值,这只是从理论和技术的angular度来看,我感兴趣,谢谢!

socket.io和express.js共享会话

我遇到了这个解决scheme之间共享socket.io和express.js之间的会话:第二个答案(用户xpepermint)在这个职位: socket.io和expression4个会议 不幸的是我被困在了下面的代码中,因为variablesio位于config/socketio.js ,variablessession位于config/express.js : io.use(function(socket, next) { session(socket.handshake, {}, next); }); 我在哪里放置,如何适应上面的代码? 我的app.js文件如下所示: 'use strict'; import express from 'express'; import mongoose from 'mongoose'; mongoose.Promise = require('bluebird'); import config from './config/environment'; import http from 'http'; // Connect to MongoDB mongoose.connect(config.mongo.uri, config.mongo.options); mongoose.connection.on('error', function(err) { console.error('MongoDB connection error: ' + err); process.exit(-1); }); // Populate databases […]

NodeJS express – 如何在路由器中添加会话数据?

我需要添加一些会话数据快速路由器(使用快速会话和护照)。 我将数据正确存储到DB(mongo)中的用户logging中,并尝试将值设置为会话数据: req.user.myData = "my session data"; 不幸的是,用户数据只有在通过护照进行用户授权时才被序列化。 所以“myData”不会被存储到当前会话中。 新用户会话启动时,数据从数据库正确加载并可用。 有什么办法(我希望如此)在当前会话中提供数据?

快速会话不会保存…除非我刷新我的浏览器?

我试图实现一个简单的login节点和expression,将login的用户信息存储在快速会话中。 这是我到目前为止 应用: var express = require("express"); var cookieParser = require("cookie-parser"); var session = require("express-session"); var bodyParser = require("body-parser"); var app = express(); app.use( cookieParser(SESSION_SECRET) ); app.use( bodyParser.json() ); app.use( bodyParser.urlencoded({extended:true}) ); app.use( session({secret:SESSION_SECRET, resave:true, saveUninitialized:true, cookie:{httpOnly: false, secure:false, maxAge:COOKIE_MAX_AGE}}) ); // a couple app.use statements to serve static files from a public folde 我的login路线是这样的: […]