我(几乎)成功地将Node.js与Express和Redis结合使用来处理会话。
我遇到的问题是使用时不保留会话res.redirect()
。
这是我的看到方式:
req.session.username = username.toString();
console.log(req.session);
res.redirect('/home');
console.log()打印:
{ lastAccess: 1322579131762,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 },
username: 'admin' }
现在,这是以下代码:
app.get('/home', [app.requireLogin], function(req, res, next) {
// Not showing the rest as it's not even getting there
// Instead, here is what's interesting
app.requireLogin = function(req, res, next) {
console.log(req.session);
这个console.log()打印出:
{ lastAccess: 1322579131775,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 } }
显然,“用户名”对象已消失。该会话没有保留它,而是重新构建了一个新会话。
我该如何解决?如果您需要任何信息,请不要犹豫。
这是我设置会话管理的代码:
app.configure(function() {
// Defines the view folder and engine used.
this.set('views', path.join(__dirname, 'views'));
this.set('view engine', 'ejs');
// Allow parsing form data
this.use(express.bodyParser());
// Allow parsing cookies from request headers
this.use(express.cookieParser());
// Session management
this.use(express.session({
// Private crypting key
secret: 'keyboard cat',
store: new RedisStore,
cookie: {
maxAge: 60000
}
}));
this.use(app.router);
});
这是基于gist的整个项目(我的意思是,部分内容):https
:
//gist.github.com/c8ed0f2cc858942c4c3b(忽略渲染视图的属性)
好吧,我找到了解决方案。问题在于,该时间maxAge
已添加到当前日期。因此,在浏览器端,cookie被设置为在所示的GMT时间过期。
问题如下:我使用虚拟机测试node.js,并且,您知道…有时会挂起计算机。
好吧,发生的事情是机器的时间晚了两天。因此,无论何时在服务器端设置cookie,客户端都认为cookie已经过期,因为我的主机没有迟到两天。
另一个愚蠢的结果。
我有个问题,希望你能帮助我。我的控制器中有一个创建CodeIgniter会话的方法。为确保创建正确,我在创建会话后执行函数。然后,在我的Ajax请求中,我放置了一个以刷新页面。 这就是我的方法: 这种方法称为槽式Ajax,如; 最后,在Ajax请求中,我做了,但是当页面刷新时,这将把我重定向到,并且当我想检查包含
问题内容: 我的应用程式资料库类别 Gradle lib: 当我问例如它将给出此错误时,AppDatabase_Impl在我的应用程序类中不存在 问题答案: 对于那些使用 Kotlin的人 ,请尝试在应用中更改为 例如: 还记得添加这个插件 到应用程序级别build.gradle文件的顶部,然后进行清理和重建(根据https://codelabs.developers.google.com/cod
问题内容: 我正在使用Node.js,Express和Redis构建一个用于会话管理的网站。无论出于何种原因,如果我有一个会话变量(在此示例中),并且刷新页面,则不会保存该变量,但是,如果我在设置了变量后调用,则确实会将其保存到Redis(redis- cli监视器显示此内容-不调用表示变量不存在,而调用则显示该变量)。 我正在使用它来设置和启动服务器: 然后,在那条路线中,我有: 由此,我应该能
问题内容: 在CentOS 6.3上与Python 2.7,Apache + mod_wsgi一起运行 当我在localhost上时,一切正常。但是,当我在Azure中的vm上运行代码时,我看不到会话信息在页面之间保留。 基本上我的看法是: 打印输出为: 我对apache的wsgi配置是: 我设置了secret_key: 我尝试同时设置SERVER_NAME,但这无济于事: 关于如何进行更多调试的
我在Tomcat7中有一个web应用程序,它将会话中的用户信息作为DTO对象保存。我还为我的项目启用了Spring Security性,如果用户没有会话,它会自动将用户重定向到登录页面。 如果我登录到应用程序一次,然后在Eclipse中重新启动Tomcat,会发生的情况是,我的会话被冲出,但cookie没有运行。 Edit:尽管Firefox说,但如果关闭并重新启动Firefox,cookie仍然
问题内容: 我正在使用AngularJS框架进行项目。我对使用这个框架很陌生。过去,我只使用纯JavaScript和jQuery。该项目是针对利基市场的一种Web设计器应用程序。 当用户在设计时在页面之间移动时,我希望维护他们所做的所有更改的会话。 现在,如果用户登录,我们将使用数据库中的数据加载会话。当用户单击“保存”按钮时,我们将使用会话数据更新数据库。有人告诉我,我可以在Angular中保持