Tag: 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"}

与www和非www的Nodejs会话问题

我有以下的条件 (1)如果我访问https://example.com如果去login页面。 (2)同样如果我访问https://www.example.com它去login页面 现在我从https://example.comlogin,redirect到仪表盘页面,这很好。 并再次当我访问https://example.com它redirect到仪表板页面。 现在问题,当我访问https // www.example.com它redirect到login页面。 这意味着我可以login两个会话 1) https://example.com 2) https://www.example.com在同一浏览器上。 ? 如何处理这个请。 我也使用httpredirect。 http.createServer(function (req, res) { res.writeHead(301, { "Location": "https://www." + req.headers['host'] + req.url }); res.end(); }).listen(80); var secureServer = https.createServer(sslOptions,app).listen(443, function(err,result){ console.log("Express server listening on port : 443"); console.log("Mode : " + app.get('mode')); }); 有什么build议么 ? 谢谢

NodeJS在第二个用户会话后显示不同的MySQL结果

我是NodeJS和Express的新手,并且遇到了一些我自己无法解决的小问题。 我一直在努力自己修改这些代码,但是我所有的努力都是毫无意义的。 基本上我正在寻找使简单的networking应用程序,它支持用户login,并显示login用户(用户configuration文件)相关的数据。 这就是我自己做的事。 有点。 在启动应用程序后,为用户显示“user1”login和数据,但是在其他浏览器中以不同的用户(user2)login后,两个用户会话显示的数据库结果相同(结果来自第二个用户 – “user2 “)。 我即将实施密码密码今天,但这让我卡住了。 这是我的代码: app.js var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var session = require('express-session'); var user = require('./users.model.js'); var data = {} app.use(bodyParser()); app.use(session({ secret: 's00p3rc001', resave: true, saveUninitialized: true })) app.set('view engine', 'ejs'); app.get('/', function(req, res){ res.send('It works!') }) app.get('/login', […]

login到一个快速应用程序会破坏其他(相同的服务器)会话

我有两个独立的Express 4.x应用程序在同一台服务器上运行(不同的端口),共享一个MongoDB实例。 他们都使用不同的数据库,并有不同的会话秘密。 我可以单独login到应用程序A或B,而不会出现问题。 我的会议得到保持,一切都很好。 但是,如果我login到A然后login到B,则A中的会话被销毁(反之亦然)。 这两个应用程序具有几乎相同的本地身份validation 他们的serializeUser和deserializeUser是非常原始的(跟随Passport docs几乎到tee)。 看来,当login到A然后B, req.session.passport被销毁,导致req.user不正确序列化应用程序A和会话被认为是无效的。 我开始认为它与两个应用程序在同一台计算机(因此是域)上运行的事实不同,只有端口不同。

创build一个用户会话 – NODE js

一般来说,我是新的节点js和JavaScript。 我有下面的一段代码将处理login。 我有一个客户表的MYSQL数据库。 当客户input他们的用户名和密码时,会检查它是否存在于数据库中。 这部分工作。 我现在想要增强此function,以便它将采用用户名和创build某种会话variables,可以在整个应用程序中使用。 我对JS很陌生,所以我不确定哪些内置设施已经存在,或者最佳实践。 我希望能够在整个应用程序中使用这个会话variables,以及为了后续的注销function。 有人能就此提出build议吗,还是指向正确的方向? 谢谢。 情况下“/login”: var body = ''; console.log("user Login "); request.on('data', function (data) { body += data; }); request.on('end', function () { var obj = JSON.parse(body); console.log(JSON.stringify(obj, null, 2)); var query = "SELECT * FROM Customer where name='"+obj.name+"'"; response.writeHead(200, { 'Access-Control-Allow-Origin': '*' }); db.query( query, [], function(err, […]

带有Facebook的node.js Express / socket.io混合应用程序

我在我的node.js应用程序中使用express / socket.io组合。 到目前为止它工作正常。 现在,我需要将facebook用户标识和电子邮件标识 (用户被授权后)存储到会话范围中。 我看到有很多的select,有点在这里丢失..在我的应用程序,大部分的通信通过socket.io发生..最终我想要的是访问用户ID和电子邮件ID随时在客户端… var express = require("express"), fs = require("fs"), app = express.createServer( form({ keepExtensions: true }) ), io = require("socket.io"); socket = io.listen(app);

Node.JS / Express.JS CouchDB会话存储

有没有工作会话存储或我必须使用MemoryStore ?

护照会话不会在浏览器closures时被破坏

我有一个Node.js服务器,我正在使用护照进行会话pipe理。 计划使用它来实现记住我很快的服务器function。 但我有一个问题,正常会议基本上就是记住我。 又名会话cookie connect.sid在浏览器closures时不会被破坏,我相信这不是正确的行为。 我正在使用connect-bluesky作为会话存储(使用azure色表格)和couchbase来存储默认会话信息以供将来使用。 相关代码: Server.js app.configure(function() { app.use(express.logger('dev')); // log every request to the console // set up our express application app.use(express.cookieParser()); app.use(express.json()) .use(express.urlencoded()); app.use(express.static(__dirname)); var db = new couchbase.Connection({host: 'http://localhost:8091', bucket: 'default'}, function (err){ console.log("In cb connect"); console.log(err); }); app.use(express.session({secret: 'SECRET', store: new BlueskyStore({ account: 'ACCOUNT', key: 'KEY', table: 'sessionsTable', cookie: […]

Express – socket.io – 读取会话

我使用express和socket.io。 当你创build一个与快递的会话。 点击button,使用Ajax和POST方法(login),我保存一个会话。 app.post('/login', function(req, res){ req.session.loginid = req.body.lgnid; }); 在socket.io中它无法读取。 感谢您的build议。 我的源代码: var express = require('express'); var app = express.createServer(); var io = require('socket.io').listen(app); var MemoryStore = express.session.MemoryStore; var sessionStore = new MemoryStore(); var parseCookie = require('connect').utils.parseCookie; var Session = require('connect').middleware.session.Session; var stylus = require('stylus'); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({store: sessionStore , secret: 'secret' , key: […]

如何从快递app.js加载反应组件?

我只是在我的应用程序中包含快速会话。 我在我的server.js中设置req.session.user = user。 我也发送到我的/欢迎路线,代表我的主页。 我正在使用反应路由器在用户导航时在客户端显示我的组件。 但是,在实现快速会话之后,我想要expression/欢迎路由,以便通过req.session.user对象加载我的WelcomeUser组件,并提供有关可用用户的信息。 我的主要动机是发送快速req.session.user到WelcomeUser组件,所以我可以为我的用户创build一个configuration文件页面。 我正在寻找解决scheme,我发现使用fetchAPI从快速路线获取数据。 解决方法是在我的server.js中使用不同的路由,例如/ getsession,并从componentDidMount生命周期方法中的URL中获取会话,但是我不知道这是否是最佳方式。 以下是我的代码的相关部分。 这是类似于我用来显示我的组件的反应路由器路由的高速路由。 换句话说,在我的react路由器中的/ welcome路由器调用callback(null,WelcomeUser)来显示组件。 app.get('/welcome', function (req, res, next) { if(!req.session.user){ res.status(401).send(); }else{ console.log("********THIS IS THE USER SESSION******* : "+ req.session.user); // res.status(200).send( "We are here" ); res.status(200).render( './WelcomeUser.js' ); } }); 以下是我的反应路由器: component: Base, childRoutes: [ { path: '/', component: HomePage }, { […]