Tag: 会话

nodejs,如何检查每个页面上是否定义了会话

我正在使用快递开发一个简单的网站。 在渲染任何页面之前,我只是对如何进行nodejs检查会话感到困惑,所以如果用户没有login,他什么也看不到。 我认为在rails中是非常简单的,只需在应用程序控制器中添加一些代码即可。 但是如何在nodejs中处理这样的事情呢?

Node.js TCP套接字会话

我有多个客户端从应用程序连接到Node.js TCP套接字服务器。 我想知道一个安全的方式来pipe理他们的会议。 用户名+密码通过套接字传递给服务器。 服务器确认这是正确的。 我相信我现在需要生成一个唯一的令牌发送回客户端。 现在,如果用户closures应用程序,然后再打开它,这个令牌可以传递给服务器,因此服务器将确认用户再次被authentication。 但是,这个令牌可能被其他人用来访问这个人帐户。 有没有办法来防止这一点? 有没有更安全的方法(同时仍然保持用户无需再次login进行身份validation的能力)? 你将如何处理来自使用相同login的其他设备的连接。 他们是否得到不同的标记或相同的标记? 非常感谢。

会话variables不存储在node.js中

我search并发现很多类似的问题,会话variables被设置为undefined,但没有一个我发现的答案似乎适用。 我在我的路由器文件中有这个function: exports.loginHandler = function(req, res){ username = req.body.username; password = req.body.password; readAccount(username, function(acct){ if (acct.password = password){ req.session.username = username; console.log(username+' logged in'+' pass: '+acct.password); }; }); res.redirect('/'); }; console.log执行得很好,username和acct.password都有相应的值。 但是,req.session.username最终会被设置为undefined。 这是readAccount函数: readAccount = function(user, callback){ AM.login(user, function(acct){ callback(acct); }); }; 这里是AM.login: exports.login = function(user, callback){ accounts.findOne({username: user}, function(err, result){ if (err) throw err; […]

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,要么非常善于猜测,但这似乎仍然是一个安全漏洞? 你对此有什么想法? 是达到我想要的最好的方法吗?

Sails.js滚动会话

滚动会话是在没有用户活动(不包括实时更新数据的websockets)的情况下在一定时间内到期的会话。 如果用户在到期之前访问该网站的另一部分,则应该延长到期日。 我将如何与Sails.js做到这一点? 在/config/session.js cookie下设置maxAge和expires不会产生所需的效果。 到期不会延长与另一个页面加载。 它保持不变。 编辑:一旦Sails.js升级其Express版本,这会解决吗? 我看到https://github.com/expressjs/session有一个rolling选项。 编辑2:我看到这个答案: 尽pipe活动ExpressJS会话过期我需要复制和粘贴 req.session._garbage = Date(); req.session.touch(); 到控制器的每条路线上? 有没有更好的办法?

如何在交叉源请求中保留会话数据?

我是使用Express和Connect的新手,所以我希望我做一些简单的解决scheme愚蠢的东西… 基本上,我有一个用户使用Personalogin的页面。 为了validation身份validation尝试,我使用express-persona 。 假设这个模块将用户的validation邮件地址保存在一个会话variables(req.session.email,默认)中。 现在,login后,用户可以发表评论,这个评论将与用户login的电子邮件地址一起保存。当服务表单的服务器与处理发表评论的服务器相同时,这工作正常。 然而,当它们不同时(比如说用户填写http://localhost:8001的表单,而浏览器则发送一个POST请求到http://localhost:8000这个应该保存注释),所有的突然req.session.email值是undefined 。 我认为我正确设置了跨源资源共享。 表单是这样发送的(使用jQuery): $.ajax('http://localhost:8000/post/comment', { data: {comment: $('#commentField').val()}, type: 'POST', xhrFields: {withCredentials: true} } ); (注意xhrField: {withCredentials: true} – 会话cookie被传递,我通过检查networking请求来validation。) 服务器设置(我认为)正确的CORS标题: res.header('Access-Control-Allow-Origin', 'http://localhost:8001'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); res.header('Access-Control-Allow-Credentials', 'true'); 当我添加console.log(req.cookie) ,我看到sessionId cookie与POST请求一起发送的值相同。 但是: console.log(req.session.email)显示undefined的跨源请求 – 再一次,当请求来自同一个来源时,它工作正常。 我究竟做错了什么?

Nodejs Express MySQL会话存储

我一直在使用connect-mysql-session在MySQL数据库中存储会话,但它不再被维护,并且已经有两年没有更新过了。 有没有其他的mysql会话存储模块用于快速维护? 如果没有,我仍然可以使用MySQL数据库来存储用户信息等,并使用另一种types的数据库来存储会话? 像Redis或MongoDB ? 这是好的做法吗?

在浏览器中保存所有打开的选项卡的socket.io ID

你可以告诉如何解决保存身份socket.io ,浏览器中的所有打开的标签的问题。 例: 我打开了一个页面(例如/index ),我将它设置为连接到socket.io并获取唯一的会话ID。 但是当我在另一个选项卡上打开相同的页面 – ID创build另一个,也就是说,已经有两个具有两个不同ID的化合物。 这是对的,这是合乎逻辑的。 但是,我需要发送消息到这些ID,同时在所有选项卡(包括绑定到user_id ),因为会话ID是不同的 – 这是不可能的。

摆脱会话和套接字池sailsjs

嗨,我目前正在使用风帆restAPI应用程序工作。 我正在阅读以下文章http://engineering.linkedin.com/nodejs/blazing-fast-nodejs-10-performance-tips-linkedin-mobile 在第二点,有人build议摆脱套接字池 var http = require('http'); var options = {…..}; options.agent = false; var req = http.request(options) 在第7点,它build议通过删除摆脱会议。 app.use(express.session({ secret: "keyboard cat" })); 我想知道如何在帆中做到这一点。

node.js express-session是无状态的还是有状态的?

我实际上正在使用快速会话,我有一个问题:是node.js,还是更特殊的快速会话无状态或有状态? 实际上,当我们需要使用会话和节点时,我们使用req.session.foo,这意味着我们使用请求来获取会话 。 那么,服务器上是否存储了任何东西? 在这种情况下,为什么我们不能像在PHP中一样使用“全局variables”来访问值? 在另一种情况下,这意味着我们有一个无状态的服务器,并且sessionID值是否对应于令牌密钥? 你能帮我理解这个中间件吗? 感谢提前