Tag: cookie

在Node.js Express / Connect中,有没有办法将会话设置为无穷大?

我是这样做的: app.use(express.session({ cookie:{domain:"."+settings.c.SITE_DOMAIN}, secret:'abc', store: redis_store, })); 当我login到我的redis并键入TTL sess:… ,似乎这个会话有一个到期。 我怎样才能使会议永不过期? (一切)。 我也希望cookies永不过期。

表示cookie返回undefined

我试图在express.js上设置cookie,但它返回undefined。 我search了很多网页,并把app.use(app.router)上面的express.cookieParser() ,但它仍然不能返回正确的值。 app.js app.configure(function(){ var RedisStore = require('connect-redis')(express); app.use(express.logger()); app.set('view options', { layout: false }); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser({uploadDir: './uploads/tmp'})); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "william", store: new RedisStore })); //Initialize Passport! Also use passport.session() middleware, to support //persistent login sessions (recommended). app.use(passport.initialize()); app.use(passport.session()); //app.router should be after passportjs app.use(app.router); app.use(express.compiler({ […]

如何从请求中获取sessionId?

我使用快递来支持我的会话pipe理: app.use(express.cookieParser('your secret here')); app.use(express.session({secret: 'mysecretcode'})); 我从请求中提取和保存sessionId。 但是,我从req.sessionID获得的ID与cookie中发送的ID不同: req.sessionID –> 'E7oSoKmQfcMKnk5_jA5tF5vR' cookie.connect.sid –> 's%3AE7oSoKmQfcMKnk5_jA5tF5vR.DQnYdDDcFn8K2JJHMgWL5DTzNYYwIU3DA5a10WImA7U'; 为什么这两个不同? 如何在发送回复之前获取connect.sid?

没有cookie的Node.JS会话

我一直在尝试,但我发现iOS 5默认不接受cookie。 即使使用Redis,我一直在尝试很多不同的事情,但仍然无法获得一个会话持续多个请求。 如果不使用cookies,我还有其他会话选项吗? 我正在使用Redis滚动一个粗略的会话模块,在那里我只是发送自己的“会话ID”,但似乎可以很容易地刹车。

节点Body Parser和Cookieparsing器做什么? 我应该使用它们吗?

我已经阅读了所有可以find的文档,但是我找不到这两个中间件所做的简单解释。 body-parser中的body是指什么? 为什么需要parsing身体? 类似的cookie。 我是否正确地解释了cookie-parser “parsing”或啄倒伴随web用户的cookies? 最后,我已经看到Express4中body-parser既不安全也不赞成使用。 我不应该使用它?

如何从node.js中的请求模块获取cookie?

function getCookies(){ request('http://google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(response.headers); } }) } 结果 { date: 'Fri, 11 Dec 2015 07:15:50 GMT', expires: '-1', 'cache-control': 'private, max-age=0', 'content-type': 'text/html; charset=EUC-KR', p3p: 'CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."', server: 'gws', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN', […]

如何使用Node.js / Express + Passport + Websockets进行身份validation?

我正在构build一个使用Passport.js和OAuth策略进行身份validation的angular2-login-seed 。 很显然,使用这些工具进行身份validation的默认方法是使用通过express签名的HTTP cookie。 从我所知道的护照pipe理实际的Set Cookie头,以便express可以通过request.isAuthenticated()validation每个后续请求,并通过req.session.passport.dataHere访问由护照设置的数据。 我想通过websockets将实时数据整合到应用程序中。 这当然意味着从服务器到客户端的套接字stream。 这个通信完全独立于普通的HTTP服务器请求,意思是: 它不包含所有HTTP请求包含的HTTP cookie Express不会与套接字进行交互,它使用后端使用的任何实现(sock.js,socket.io)进行pipe理。 这使得简化表示HTTP请求之间的authentication以及websocket数据到后端是困难的,因为它们是单独的通信方法。 从我的研究来看,这给了我两个select。 其中之一是使用库来给我的套接字实现(最好是socket.io上的sock.js,但我需要做更多的研究)访问快速会话。 然后,我可以validation套接字连接,但我想要的。 问题是我不知道如何将快速cookie从前端的stream,因为JavaScript无法访问它(HTTP只有cookie)。 我见过的另一个常见解决scheme是使用JWT(JSON Web Tokens)。 围绕这个存储的实现将JWT存储在前端的localstorage中。 这是SPA(在我的情况下,Angular2服务)可以发送每个请求“无状态”服务器身份validation,我们可以通过websocket发送validationwebsocket连接(前端JS显然有权访问本地存储) 。 想到这个实现时,想到了几件事情: Passport OAuth策略甚至有可能使用JWT而不是常规会话信息? 这将涉及什么样的修改? 从我可以告诉Passport策略使用某种forms的OAuth1或OAuth2父策略进行身份validation,默认使用Cookie。 将这个重要的信息存储在本地存储中将会打开应用程序直到安全漏洞(XSS,CSRF等) 如果是这样,我见过的最常见的解决方法是将JWT存储在一个cookie中,这样它不能被轻易访问,欺骗或伪造。 但是,这使我回到了之前使用智威汤逊的地位,所以不用担心。 这是否意味着我不得不在后端使用某种状态pipe理存储(例如Redis)来pipe理JWT主体的身份validation和解码? (我对Redis一无所知,等等)。 连接服务器HTTP请求和套接字数据之间的身份validation的想法很奇怪,但对正确authentication一个套接字连接看起来至关重要。 我有点惊讶一个更简单的方法不存在。 我已经做了一些研究,并且看到了诸如socketio-jwt , express-jwt等等的东西,但是我不知道这是否可以用Passport策略进行可pipe理的转换,或者如果打开快速会话数据到套接字的实现,或者如果我正在做这一切都错了! 任何帮助或指导将非常感谢。

会话cookie在Electron中不起作用

我正在考虑在我正在构build的Electron [0]应用程序中实现一个login系统,但是在处理会话的过程中遇到了困难。 基本上我想存储用户会话,以便在应用程序重新启动之间持续存在(如果启用了“记住我”function)。 我必须利用现有的后端与cookie身份validation,我不能改变任何东西。 从Session对象的Electron文档[1]我收集到,我应该使用像persist:someName这样的分区,以便拥有一个持久存储,但是在应用程序重新启动之间,这看起来并没有持续存在。 我目前设置cookie的方式如下: // main-process/login.js const session = require('electron').session; const currentSession = session.fromPartition('persist:someName').cookies; currentSession.set({ name: 'myCookie', url: 'https://www.example.com', value: 'loggedin=1', expirationDate: 1531036000 }, function(error) { console.log('Cookie set'); if (error) { console.dir(error); } }); 运行后,我看到Cookie set输出,但重新启动应用程序并运行以下代码: // main.js const session = require('electron').session; const currentSession = session.fromPartition('persist:someName').cookies; currentSession.get({}, function(error, cookies) { console.dir(cookies); if (error) […]

ExpressJS设置/获取/使用Cookie

请求中无法获得设置的cookie。 我设置了我的cookie response.cookie('name', 'My name'); 我想以这种方式得到我的cookie,之前它工作,但我改变了快速configuration,我不知道什么似乎是现在的问题。 request.cookies is and empty Object 我的快捷configuration: var express = require('express'), api = require('./routes/api'); var app = express(); app.configure(function () { app.set('port', process.env.PORT || 3000); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); //app.use(express.bodyParser()); app.use(express.compress()); // New call to compress content app.use(express.cookieParser()); app.use(express.session({secret: 'secret'})); app.use(app.router); app.use(express.methodOverride()); //app.use(express.static(__dirname + '/public')); }); app.all('*', function(req, res, next) { […]

如何通过BrowserSync中间件设置会话cookie?

我最近从Express Web应用程序移到了Nodejs的BrowserSync应用程序。 使用Express,如果我想设置一个cookie,我的configuration看起来是这样的: var express = require('express'); var session = require('express-session'); var finalhandler = require('finalhandler'); var serveStatic = require('serve-static'), serve = serveStatic(__dirname); var app = express(); app.use(session({ // see https://github.com/expressjs/session secret: 'keyboard cat', resave: false, saveUninitialized: false })) .use(function(req, res, next) { res.cookie('myCookie', 'my cookie value'); var done = finalhandler(req, res); serve(req, res, done); }); […]