Tag: session cookies

访问我从护照JS获得的FB用户ID

我有一个问题,试图使用我从我创build的护照JS政策获得的FB用户ID。 在我的应用程序中,我让用户login到FB,并在我的数据库中创build了一个用户,如果没有匹配的话。 我有一个非常基本的节点JS应用程序,在这里我可以pipe理所有视图(现在使用hogan引擎)。 所以当我做我的app.js文件时: app.get('/myaccount', ensureAuthenticated, function(req, res){ console.log('– User ID:' + req.user.id ); res.render('myaccount', { user: req.user }); }); 我得到正确的userId。 例如我的是XXXXXXX8342620263。 但在客户端(我的hjs文件)我试图使用相同的userId,我得到非常相似,但不同的ID。 <script type="text/javascript"> $(document).ready(function() { // Populate the spends table console.log('==Populate the spends for my account ' + {{user.id}}); populateMyData({{user.id}}); }); </script> 对于我的帐户我得到XXXXXXX8342620264而不是XXXXXXX8342620263 。 这让我疯狂。 有什么build议么? 我什至试图做 var userId = {{user.id}}; userId–; 由于某种原因,我仍然得到相同的错误userId。

如何清除req.session清除节点js中的浏览器cookie?

我使用"express": "~4.14.0"用express-session保存用户名。 一旦用户login,我将把用户名保存在req.session.authorizedUser = username以将其显示在应用程序标题中。 当浏览器历史被清除或浏览器closures时,我想清除会话。 如果在进行这两个操作时有任何方法清除会话,请告诉我。 我曾尝试设置会话cookie的maxAge选项,如下所示,但它并不能反映出好的结果: app.use(session({ secret: "key test", resave: false, saveUninitialized: true, cookie: { secure: !true, path: '/', httpOnly: true, maxAge: null} }));

路由器中的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键设置为任何值。 似乎会话正在重置子域之间。 我如何解决这个问题?