Articles of session cookies

路由器中的Hapijs会话

有没有一种方法可以使用会话信息,在用户成功login时从数据库加载用户数据,并通过Hapijs服务器路由中的不同路由加载? index.js var Hapi = require('hapi'); var server = new Hapi.Server(); var routeManager = require('./routes/manager'); server.connection({ host: "localhost", port: 8000 }); server.register(require('hapi-auth-cookie'), function (err) { server.auth.strategy('base', 'cookie', { password: 'somesecret', cookie: 'app-cookie', isSecure: false }); }); server.route(routeManager.loginRoutes); server.start(function(){ console.log('application started running on: '+JSON.stringify(server.info.uri)); });` manager.js `var users = { john: { id: 'john', password: 'pass', […]

如何创build基于nodejs的url不同的会话?

我们的网站有两个部分: 1. admin (content management) 2. site pipe理部分将有url“/pipe理”和网站部分有url“/”。 例如:我的网站名称是www.example.com,那么pipe理部分的url是“www.example.com/admin”,网站的url是“www.example.com”。 我想创build基于url的会话意味着来自admin部分的请求将具有不同于来自site部分的请求的会话。 我该怎么做?

我应该如何在node.js上实现会话存储

我正在创buildjosi ,一个node.js的web框架。 我想添加会话存储。 什么是实施这个最好的方法? 我假设它可能必须基于cookie,但我有兴趣知道是否有其他框架有不同的方法。

更新/刷新快速会话

在我的应用程序中,如果用户未login,则会限制某些操作和页面的访问权限。我有: var restrict = function(req, res, next) { if (!req.user) { console.log("USER isn't logged in.") return res.status(403).send('Access or action denied, please log in'); } next(); } app.get('/stocks', restrict, MainHandler.findAllStocksFromUser); app.get('/stocks/:id', MainHandler.findStockByIdAndDates); app.put('/stocks/:id/stockActions', restrict, MainHandler.handleStockAction); 我本质上是试图每次客户端向服务器发出请求时刷新一个会话,以便服务器不会注销用户/不应该销毁会话。 对于testing,我希望会话过期/用户被注销,如果20秒后没有用户向服务器发出请求。 我有: app.use(session({secret: 'secret', saveUninitialized: true, resave: true, expires: new Date(Date.now() + (20000))})); 然后,我尝试使用中间件来每次使用请求时刷新到期date: // Session-persisted message middleware app.use(function(req, res, […]

Express.js / Passport应用程序为每个请求创build新的会话,尽pipe会话ID在请求标头中

之前没有注意到这一点,因为对于客户端 – 服务器通信,通过XHR(至今)还没有需要validation的事情。 在实现一些集成testing时,我正在创buildrealy请求node-xmlhttprequest到应用程序的一个实例。 用户在第一个请求中被authentication,理论上用户的唯一标识符和一些其他相关信息被存储在会话中(正如我所说的,这对于真正的客户端来说很好,他们不需要通过XHR来确认他们的身份)。 出于某种原因,即使随后的请求正在使用完全相同的会话ID触发,我无法在后续请求中检索会话,因此无法看到用户已通过身份validation,这导致失败的testing,其中预期的行为不会发生,HTTP 401 UNAUTHORIZED正在填满terminal。 我见过几个这样的问题,但是“同一个会话ID”似乎并不存在于其中。 我是否需要手动添加Set-Cookie头到所有的XHR请求? 太糟糕了,还有更好的办法! 所以人们喜欢源代码,这里有一些来自testing,发出这些请求: // Ensure logged in before sending request, to verify that authorized // users encounter the expected behaviour. jQuery.post(domain+'/login', {email:'test@express.app', password:'12345678'}, function(data,x,y){ data.should.equal("true") jQuery.ajax({url:domain+'/event', type:"POST", name: "TestEvent", location: "TestVille", startDate: new Date('2013-09-01'), startTime: '6:45 pm', description: "Test Event #1", success: state.success, error: state.error, completed: […]

Express中跨子域的会话

我使用Express with Node中的vhostfunction来pipe理我的应用程序的多个子域。 该应用程序使用相同的会话密钥和密钥,我相信我已经使用了正确的会话cookie设置: cookie: { path : '/', domain : '.example.com', httpOnly : false, maxAge : 1000*60*60*24*30*12 //one year(ish) } 我在常规站点设置了一个会话variables,其中子域是未定义的,例如http://example.com,如下所示: req.session.rep_id = rep._id; res.redirect('https://' + company.name + '.example.com/'); 但是当我将它们redirect到subdomain.example.com时,会话没有将rep_id键设置为任何值。 似乎会话正在重置子域之间。 我如何解决这个问题?