Tag: cookie

有条件的app.use在节点 – expression

有没有可能在app.js中有条件地使用app.use ? 表示cookie会话 不能dynamic地改变maxAge的值,我正在考虑做这样的事情,但我得到一些错误: app.use(function(req,res,next ){ if(typeof req.session == 'undefined' || req.session.staySignedIn === 'undefined'){ //removing cookie at the end of the session cookieSession({ httpOnly: true, secure: false, secureProxy: true, keys: ['key1', 'key2'] }); }else{ //removing cookie after 30 days cookieSession({ maxAge: 30*24*60*60*1000, //30 days httpOnly: true, secure: false, secureProxy: true, keys: ['key1', 'key2'] }); } […]

未定义的req.session和req.session.user_id不起作用

我使用Express和节点进行会话pipe理。 我想使用express创build一个会话,以便在redirect到公用文件夹中的静态文件之前进行身份validation和会话。 以前我有一个问题麻烦使用express.session与https但它解决了通过在express.session中包含path作为/ public但现在我的req.session显示为未定义,但在浏览器中有connect.sid cookie存在 app.js是: var express = require('express')TypeError: Cannot set property 'user_id' of undefined at /opt/expressjs/app.js:59:24 at callbacks; var http = require('http'); var https = require('https'); var fs = require('fs'); var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/svgtest1'); var options = { key: fs.readFileSync('privatekey.pem'), cert: fs.readFileSync('certificate.pem') }; var app […]

简单的Expressjs应用程序没有响应

我正在努力升级到expressjs 4.0。 下面这个非常简单的代码将请求挂到http://localhost:3000/并且没有任何重新排列的东西可以解决这个问题。 但是,如果我注释掉cookie-parser,body-parser和express-session的app.use()语句,它就会起作用。 显然我需要他们,所以留下他们评论出来是不是一个选项。 我知道我做错了,这很简单,但我无法看到它。 有人能给我一个正确的方向推动吗? var express = require('express') , cookie = require('cookie-parser') , body = require('body-parser') , session = require('express-session') , http = require('http'); var app = express(); var router = express.Router(); app.use(cookie); app.use(body); app.use(session({ secret: 'bigsecret' })); router.get('/', function(req, res, next) { res.send('Welcome'); }); app.use(router); app.set('port', process.env.PORT || 3000); http.createServer(app).listen(app.get('port'), function(){ […]

在HTML5全局sessionStorage对象上使用快速会话有什么好处?

我的理解是,在节点顶部使用express的应用程序中,可以通过req.session来访问会话对象,可以在其上设置任意数量的键/值对。 使用这种方法在DOM中的全局sessionStorage对象上存储键/值对的优点是什么?

hapi-auth-cookie不设置cookie

对于我的节点应用即时通讯使用铃和hapi-auth-cookie插件来使用雅虎api。 使用当前的代码,我可以用雅虎进行身份validation,然后redirect到主页。 但是,一旦我到达主页,request.auth似乎是空的。 从我所知道的情况来看,我正在做所有的事情,但是一旦我回到主页,我就没有authentication了。 任何帮助表示赞赏! 这是我得到的: var Path = require('path'); var Hapi = require('hapi'); var cookieSession = require('cookie-session'); var serverOptions = { views: { engines: { html: require('handlebars') }, path: Path.join(__dirname, './app/www/public/pages'), layoutPath: Path.join(__dirname, './app/www/public/pages') } }; var server = new Hapi.Server(8003, serverOptions); server.pack.register([ require('bell'), require('hapi-auth-cookie') ], function(err) { if (err) { throw err; } […]

req.session.passport为空:req.user未定义

我之前曾经问过类似的问题,但我注意到它是在Javascript部分。 对于现在可能会出现什么问题,我也有更具体的想法。 基本上,我的日志中req.session.passport是空的。 每当我开始浏览我的网站,req.user变得未定义,因为会话没有Passport的login用户了。 我想知道有没有人知道如何解决这个问题? 也许这只是Passport的configuration错误,或整个Express设置? App.js: var express = require("express"), bodyParser = require("body-parser"), mongodb = require("mongodb"), mongoose = require("mongoose"), uriUtil = require("mongodb-uri"), morgan = require("morgan"), session = require("express-session"), passport = require("passport"), flash = require("connect-flash"), ip = "hidden", port = process.env.PORT || 80 var app = express() app.disable("x-powered-by") app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true })) app.use(morgan("dev")); // […]

使用encryption的cookie和会话存储来保护请求

我最近注意到,我正在咨询的应用程序正在使用未encryption的cookie。 前端(Angular)定期使用以下内容来提取用户标识: var user_id = JSON.parse($cookies.userdata).id; 我想象一个不愉快的访问者可以不断地使用他们的浏览器来改变他们的ID和访问他们不应该的资源。 这是一个巨大的红旗,我可以用一些帮助支持这一点。 这看起来像一个足够坚实的指导 ,但我并没有把自己的想法围绕在不同的部分。 如果我使用Mozilla的客户端会话,那么cookie中存储了什么? 任何我想要的? 我有诸如GET /api/v1/user/:user_id API路由来返回关于用户的信息。 如果Cookie在浏览器中被encryption,我将失去访问当前user_id并进行此API调用的能力。 我的行动计划是什么? 为这个API创build一个代理服务器端,首先解密cookie,提取user_id , 然后调用GET /api/v1/user/:user_id ? API路由被一个函数保护, req.isAuthenticated() === true ,如果有帮助的话。 鉴于以上情况,会议在什么时候开始? 假设我在MongoDB中存储用户会话。 我们知道cookies只能存储4kb,但如果这样就足够了? 应该在cookie中存储什么types的数据以及应该在用户会话中存储哪种数据? 你的回答将会是一个很长的路要走,清理一些对我来说有点黑盒子的概念。

Node.js Express app:如果存在cookie,则将CSS class添加到服务器端的元素中

我有一个快速的静态网站应用程序。 我用app.js中的cookie调用我的网站的翻译: // i18n app.get('/hu', function (req, res) { // http://127.0.0.1:3000/hu res.cookie('locale', 'hu', { maxAge: 900000, httpOnly: true }); res.redirect('back'); }); app.get('/en', function (req, res) { // http://127.0.0.1:3000/en res.cookie('locale', 'en', { maxAge: 900000, httpOnly: true }); res.redirect('back'); }); 如果有人访问http://127.0.0.1:3000/en URL,则会存储调用翻译的Cookie。 hu是默认的语言,当有人第一次访问我的网站时,没有存储任何cookie。 但是,如何在英文翻译处于活动状态时将CSS类添加到我的网站? 我有一个导航栏,中间是水平居中的标志。 在英语语言中,单词的长度不同,甚至导致居中的柔性盒元素left-nav | logo | right-nav left-nav | logo | right-nav left-nav | […]

PHP和node.js共享会话标识

我正在考虑使用node.js和socket.io来实现聊天/消息传递系统来传递消息等。 但是,系统将使用PHPauthentication系统使用PHP会话。 显然我需要一些方法知道连接的node.js用户X是PHPauthentication的用户X? 经过一番研究,似乎使用Memcache与节点共享php会话(通过存储在JSON等)是相当普遍的。 但是,仍然存在确定哪个连接的节点用户是存储php会话的问题? 我的第一个想法是使用PHP设置的cookie,利用PHPSESSID值等 – 但是用户肯定可以修改该cookie给其他人的PHPSESSID,并且bazinga? (很明显,他们要么知道PHPSESSID,要么非常善于猜测,但这似乎仍然是一个安全漏洞? 你对此有什么想法? 是达到我想要的最好的方法吗?

expressjs从子域中删除Cookie

我通过子域提供我应用上的所有静态内容。 不过,我的快车应用程序仍然在静态内容上设置会话cookie。 我尝试按照文档设置path: app.use(express.session({ secret: 'your app secret', cookie: { domain : '.yourdomain.com' }, store: new MongoStore({ db: 'db', host: 'localhost', port:config.dbPort }) })); 但它仍然不适合我。 我也尝试使用“path”: cookie: { path : '.yourdomain.com' } 但即使这样也不能阻止在静态内容上设置Cookie。 有关如何从所有静态内容中删除cookie的任何想法? 更新: Request Headers Accept:text/css,*/*;q=0.1 Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Connection:keep-alive Host:cdn.yourdomain.com Referer:http://localhost:8888/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) […]