Tag: 会话

注销会话Angular2 nodeJS

我有一个Angular2应用程序和NodeJS服务器。 我被困在实施注销。 如果我简单地使用req.session.destroy() ,它对Angular2一方没有任何影响。 Angular2仍然认为用户login。(因为当我调用返回login用户的数据的方法,它仍然会返回它 – 即使它需要req.session.user返回这个数据)。 我看到了这个问题的一些解决scheme,但我看到的只是使用localStorage(在localStorage中保存用户,然后在单击注销后删除它)。 有没有其他更有效的方式告诉从NodeJS的Angular2用户已经注销,会话已经结束?

如何在不重新启动应用程序的情况下为所有用户清除快速会话?

我正在使用nodejs express框架开发REST服务,并将会话中的用户特定数据与用户ID保持为识别用户数据的关键字。 这里是我用来存储用户特定数据的代码: let session = require("express-session"); let FileStore = require("session-file-store")(session); //For setting up the data into session session[userId]={name:xyz, age:22} //For getting the data session[userId] 我也configuration了会话到期时间,它必须清除所有的会话值。 webserver.use(session({ cookie: { maxAge: 60 * 1000 // 24 hours // maxAge: 24 * 60 * 60 * 1000 // 24 hours }, key: "sid", resave: false, saveUninitialized: false, […]

使用NodeJS设置会话variables

validation后,我想设置一个会话variables。 目标是在每个视图上访问用户的id。 我使用快递和快递。 我的问题是,当我想访问会话variables。 在使用之前,我不会发现它们是否被初始化。 因为当我使用: if(req.session.username) 例如,我有一个错误:用户名未定义。 app.js: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cors=require('cors'); //var index = require('./routes/index'); //var users = require('./routes/users'); var UsersDB=require('./routes/UsersDB'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing […]

会话在两个本地Node.js服务器上

我有两个本地的Node.js服务器: HTTP://本地主机:3000 HTTP://本地主机:3001 我使用express.js和passport.js进行身份validation。 validation工作正确,但是如果: 我在服务器1上login 我在服务器2上login 那么服务器1上的会话消失。 如何防止这种情况? app.use(bodyParser()); app.use(cookieParser()); app.use(session({ secret: '12345', resave: true, saveUninitialized: true })); app.use(passport.initialize()); app.use(passport.session()); passport.use(new LocalStrategy( function(username, password, done) { users.getActiveByUsername(username, function(err, user) { if (err) {console.log(err); return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username' }); } if (user.password != password) { return […]

将嵌套的发射器variables传递给事件侦听器的callback函数

在下面的例子中,我需要找出一种方法将variables“id”传递给“set”发射器的侦听器。 我遇到的问题是,我不能通过像updateStore(req.id)处理程序传递它,因为从mongoStore事件“更新”有它自己的返回值“mongoId”它返回,我也需要。 另外,我不能仅仅引用req.id,因为不能保证它不会因另一个请求进入app()而改变值。 在处理程序启动时,我将如何访问updateStore处理程序中的req.id和mongoId的值? 请注意,这个示例代码不运行,它是一个更大的程序的精简版本。 我想提供我想要完成的逻辑。 var self = this; var app = express(); var mongoStore = new MongoStore({url:'/path/to/mongo'}); function updateStore(mongoId) { if (mongoId == req.id) { // do something self.emit('complete'); } } app.get('/*', function(req,res) { // req.id needs to get passed to updateStore() mongoStore.on('update',updateStore); self.on('complete', function() { self.removeListener('update',updateStore) } });

在快速会话中是否可以将一组数据结构或其他数据结构存储为会话variables?

我尝试在会话variables中保存一个集合: var rowLength = result.rows.length; var setOfPermissions = new Set(); for (var i = 0; i < rowLength; i++) { var permission = result.rows[i].permission; setOfPermissions.add(permission); } req.session.permissions = setOfPermissions; 但稍后当我尝试访问它时: var setOfPermissions = req.session.permissions; if(setOfPermissions.has('my permission')) //Error over here 我得到以下错误: TypeError:setOfPermissions.has不是一个函数 编辑:console.log(“权限:::”+ setOfPermissions)的输出; 是: 权限::: [对象对象]

Node / Express应用程序使用connect-flash时无法获取Flash消息

当用户成功login到我的应用程序时,我正尝试通过连接闪光灯呈现Flash消息。 我可以控制台登出的消息,但他们似乎并没有得到渲染客户端。 不过,我知道客户端没有什么错,因为当我在路由中用一个简单的stringreplace了req.flash[0] ,比如'You have successfully login!' 那么消息确实出现。 护照configuration: // Local login Strategy passport.use('local-login', new LocalStrategy( { usernameField: 'email', passwordField: 'password', passReqToCallback: true }, (req, email, password, done) => { User.findOne({ 'local.email': email }) .then(user => { if (!user) return done(null, false); user.validPassword(password, (err, res) => { if (err) return done(err); if (!res) return done(null, […]

在NodeJS中存储临时variables

我刚开始尝试使用NodeJS和socket.io创build一个简单的多人在线游戏(类似于在线国际象棋的想法)。 我很抱歉,如果我的问题的答案是真的很明显,因为我试着用googlesearch,但我认为我错过了一些关键的理解。 基本上,我需要在应用程序运行时在服务器上存储一些东西。 例如: 我需要存储哪些套接字连接是主机,哪些是玩家。 我需要存储每个游戏的当前状态(例如在国际象棋中,棋子在哪里,轮到谁了) 能够存储所有的socket.io“房间”也是很好的。 请随时回答这个问题,以下信息仅供参考。 有几件事我已经尝试或在网上看到: 当我谷歌与“持久性”的东西,我得到的基础上保存到数据库的结果或东西,我不认为这是我想要的。 我已经尝试在NodeJS文件的顶部添加variables,就像在普通的JS文件中使用全局variables一样。 这似乎工作,但只是感觉错了,如果有人可以解释这是如何工作,这将是伟大的。 我也看到了所谓的会话variables,我想这可能是我想要的。 我看到的应用程序只是将信息传递到客户端和服务器之间,但我宁愿客户端也不能只编辑信息来“破解”游戏。 任何帮助或解释赞赏。

如何扩展express.js会话

我怎样才能确保我的express.js应用程序的客户端会话持续时间超过几个小时? 我不希望他们每次访问我的网站时重新login。 我试图在express.session方法上express.session expires选项,但这似乎没有任何效果。

为什么会议商店有静态超时/ maxAge

我使用node.js + redis进行会话持久性,但是我注意到几乎在每个redis存储或其他会话持久性的例子中,都有一个静态 maxAge或会话超时,您可以configuration。 对我来说,会话​​长度应该基于最后一次交互是有意义的,从而允许我对超时进行更新。 Redis关于其EXPIRE文档的文档有一个关于刷新timeoutl的部分 刷新会话超时devise不好? 应该始终使用静态超时? 编辑 我原来的问题是非常一般的,因为我找不到我的具体案例的文件,我认为这可能是不好的做法! 在查看源代码之后,我终于发现了如何使用Connect + Node进行此操作: 连接监听头end事件(知道更新会话) 事件触发时,会要求会话存储保存会话 作为connect-redis的一部分,save方法更新maxAge 总之,我正在看错文件的地方。 连接#会话文档,如果maxAge被分配了一个新的值,会话存储(如connect-redis)应该遵守。