我有一个functionlogin app.post('/doLogin', function(req,res){ db.users.findOne({username: req.body.username}, function(err, user) { if( err ) { console.log("Login fail"); } else if (user != null) { if (req.body.password == user.password) { req.session.user_role = "user"; req.session.save(); } else { req.session.user_role = "null"; console.log("Wrong login"); } } res.send({redirect: "/"}); }); }); 这个函数用来保存一个variables到会话req.session.user_role = "user"; 但是当新的请求检查用户login或不 app.get('/', function(req,res){ redis.get('sess:' + req.session.id, function(err, result){ […]
我正在尝试与节点进行一些会话身份validation。 当我在本地主机上运行它时,这段代码工作正常,但是在远程服务器上不会检索到该会话。 每次我点击远程服务器,我都可以看到生成了一个新的会话ID,而在本地主机上保持不变。 请注意,我通过一个IP地址(无客户端JS)直接与浏览器访问URL。 这个问题最初出现在expressJS / jquery中,但我设法用下面的代码重现: var express = require('express'); var app = express.createServer(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat" })); app.use(app.router); }); app.get('/login', function(req, res){ // Perhaps we posted several items with a form // (use the bodyParser() middleware for this) req.session.loggedIn = true; var msg = "You are logged In. SessionId:"+req.session.id; […]
我运行一个node.js服务器应用程序,使用everyauth作为我的身份validationscheme,并尝试从我的服务器访问Facebook API。 一旦用户login(通过使用Facebook模块的everyauth),我目前处理这种方式是: var oauth = everyauth.facebook.oauth; oauth.get('https://api.facebook.com/method/fql.multiquery?format=json&queries=' + multiquery, req.session.auth.facebook.accessToken, function (err, data) { // do stuff here }); 这工作最初但几分钟后,通常约10米的不活动,我开始从Facebook API获得过期的令牌响应: Error validating access token: Session has expired at unix time… 在阅读了一些Facebook文档之后 ,似乎大多数访问令牌都应该持续默认的2小时,所以我想知道我是不是以正确的方式构buildAPI调用。 任何build议/想法的欢迎,谢谢! 编辑: 只是多一点的信息,从错误调用返回的过期unix时间确实less于当前时间,只是不知道为什么会这么短。 在此期间,我会做更多的debugging…
我已经做了一个certificate,我可以在ASP.NET MVC应用程序中包含Node.JS。 假设我要使用外部会话提供程序,如Windows Server AppFabric Cache或memcache。 我有一个应用程序,其中有一个非常复杂的程序集,我们用它来构build中间层对象,然后存储在会话中。 程序集和它生成的对象是我们最有价值的部分,我不能把这个C#项目改写成更适合Node.JS的东西。 这些数据存储在外部caching中,现在node.JS开发人员需要访问该数据。 你们在这种情况下使用了什么技术? 我非常确定,我将不得不拥有某种由asp.net提供的服务接口,因为它是拥有这个logging系统的服务接口。 我也在寻找一个新的项目的绿色领域选项,允许ASP.NET MVC和Node.Js以混合方式很好地协同工作,所以也许这可以通过存储在一个适用于两者的约定中的数据来解决。 谢谢。
我想用Passport使用Cookie会话存储,因为内存存储不是为生产而devise的: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. 这是我的Express初始化: app.use(express.bodyParser({keepExtensions:true})); app.use(express.cookieParser(cookieSecret)); app.use(express.cookieSession({ key: cookieKey, secret: cookieSecret, maxAge: sessionTimeout })); app.use(passport.initialize()); app.use(passport.session()); app.use(express.methodOverride()); app.use(express.static(__dirname + '/public')); 如果我将express.cookieSession更改为express.cookieSession ,一切正常。 使用cookieSession用户login成功时,用户在下次加载页面后不再login。 任何提示如何使护照与cookie会议工作? 我正在使用Express 3.0.0
我试图让这个工作,但我迷路了。 我想将成功或失败的人redirect到提供的URL。 当他们请求authentication时,我将URL设置到服务器上的会话中。 // Setup redirect URLs if (typeof(req.session) !== 'undefined') { if (typeof(req.session.passURL) == 'undefined') { req.session.passURL = ''; } if (typeof(req.session.failURL) == 'undefined') { req.session.failURL = ''; } if (typeof(req.query.passURL) != 'undefined') { req.session.passURL = req.query.passURL; } if (typeof(req.query.failURL) != 'undefined') { req.session.failURL = req.query.failURL; } } else { console.log('No Session?!?'); } 然后,我向oAuth提供者请求auth: […]
在使用session.socket.io模块挣扎之后,我决定通过为我的socket.io设置授权来进行套接字会话连接。 这是我的服务器: /** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var io = require('socket.io'); var redis = require('redis'); var crypto = require('crypto'); var redisClient = redis.createClient(); var app = express(); // Session Tracking var cookieParser = express.cookieParser('secret'); var RadisStore = require('connect-redis')(express); var […]
我有这个 : app.use(session({secret: 'JKSBDFJKQS444SQ4DQSND'})); 但是当我运行我的应用程序文件时,我得到这个错误: 错误:大多数中间件不再与Express捆绑在一起,必须单独安装。 怎么修 ?
我想在路线中设置req.session并使用另一个。 但事实是,它不刷新只有在Firefox(它在Chrome&Co的效果很好)。 我在客户端设置了这样的对象: <object type="text/html" id="chat-object" data="http://localhost:8080/login/?username=<?php echo $nom_joueur?>&room=<?php echo $id_partie ?>&id=<?php echo $id_joueur; ?>"></object> PHPvariables是好的。 我做了这样的服务器部分: app.get('/', [requireLogin], function (req, res, next) { res.render('index', { "username": req.session.username }); console.log("req = ", JSON.stringify(req.session)); }); /** Login form */ app.get("/login", function (req, res) { var options = { "username": req.query.username, "room_id": req.query.room, "error": null }; console.log("reqSession=" […]
如何使用socket.io将expression式4中的会话关联起来,这样会话数据既可以被检索到,也可以被双向保存。 socket.io中的身份validation是基于标记的jwt 相同的套接字在多个虚拟主机中共享 例如: global.socket.of('/secure').on('connection', function(socket){ console.log('client connected to "secure" socket'); }); app.js var port = 3000, jwtSecret = '26fed98d8c6c7c54f485f1ee7ffe44d2e1feae28'; var app = require('express')(), vhost = require('vhost'), server = require('http').createServer(app), socketioJwt = require('socketio-jwt'); // Start server with socket.io global.socket = require('socket.io').listen(app.listen(port, function(){ console.log('Express server listening on port '+port); })); // Socket authentication global.socket.set('authorization', socketioJwt.authorize({ secret: […]