我有一个使用设计进行身份验证的应用程序.在红宝石1.9.2上的Rails 3,乘客在nginx之上.
这是我的问题:我已经注意到,我的会话偶尔会越过.在以一个用户身份登录时,我有时会成为另一个用户.这真是一个可怕的问题.我已经设法通过使用active_record会话存储来停止它.但我对它可能发生的地方感到难过.它在使用cookie存储和memcached存储时都会发生.我不知道从哪里开始调试.我已经完成了所有代码,而且我只是从'current_user'读取而不是写作.我没有任何代码存储会话中的项目.
任何人都可以向我提出有关在何处或如何发生这种情况的建议?
更新:
我在页面顶部设置了一个div来转储每个请求的会话内容.它不仅仅是用户切换,而是整个会话.我在会话中设置了一些虚拟变量,只是为了看看会发生什么.当会话越过时(用户A变为用户B)用户A现在看到用户B具有的虚拟变量.用户B已注销.
更新2
我在堆栈溢出中发现了另一个问题,它描述了同样的问题:在Rails中,什么可能导致用户有另一个用户的会话?
看起来它可能是一个乘客问题?但更重要的是,它怎么会发生呢?这是一个真正的大问题.我怎么制止这个?
更新3
我现在正在使用Unicorn来提供我的应用程序.我设置了config.threadsafe!并开始专门使用活动记录会话.没有更多的memcached会话.问题消失了.至少我可以停止拔头发,因为安全孔堵了.
我仍然想知道究竟是什么导致了它.大多数教程都展示了如何使用默认的产卵方法来设置乘客.当然,我认为memcached在会话管理方面优于其他方法.特别是在多应用服务器环境中.
更新4
好的,上次和最后的更新.这是使用相同memcached连接的分叉进程的问题.我通过使用dalli memcached客户端修复它,并重置了独角兽或乘客的after_fork回调中的连接.
我有一个表格,我通过ajax提交.我正在使用jquery表单插件.我想要做的是获取从我的服务器返回的'Location'标题.我可以在萤火虫中看到它.但是每当我在成功回调中调用getResponseHeader()函数时,它总是返回'undefined'.
码:
form.ajaxForm({
dataType: 'xml',
data: {format: 'xml'},
resetForm: true,
success: function(xml,status,xhr){
var location = xhr.getResponseHeader('Location');
alert(location);
});
Run Code Online (Sandbox Code Playgroud)
位置未定义.但我可以在萤火虫中看到"位置"标题.我错过了什么?即使我从xhr对象调用getAllResponseHeaders(),它也会返回'undefined'
我最近一直在玩PostgreSQL,并且无法理解如何备份和恢复单个表.
我使用pgadmin3备份数据库中的单个表,以便将其复制到其他服务器.当我尝试对文件执行pg_restore时,我收到错误消息,指出该序列不存在:
pg_restore: [archiver (db)] could not execute query: ERROR: relation "businesses_id_seq" does not exist
Command was:
CREATE TABLE businesses (
id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
name character varyin...
Run Code Online (Sandbox Code Playgroud)
看起来转储文件不包含我的自动递增列的序列.如何将其包括在内?
我在我的应用程序中创建了一个名为"loading"的自定义jquery事件.当触发此事件时,我想要使用微调器附加一个masking元素.我可以找出那个没有问题的部分.但是,某些元素(图像,表单输入等)不能附加子元素.我需要能够检测此事件的目标是否可以接收子元素.如果它不能,那么我将把微调器和蒙版添加到它的父元素.
我最近一直在尝试使用ruby on rails.我无法将数据编入索引,因此我可以搜索包含复数和非复数关键字的项目.
轮胎将允许我为每个映射属性分配一个分析器:
mapping do
indexes title, analyzer: 'snowball'
indexes body, analyzer: 'snowball'
end
Run Code Online (Sandbox Code Playgroud)
现在,假设我在"测试"标题中有一个关键字
如果我使用查询中的属性进行搜索: http:// localhost:9200/myindex/mymapping/_search?q = title:test 它将起作用.
但是,如果我进行常规搜索而不指定如下属性:
http:// localhost:9200/myindex/mymapping/_search?q = test
它找不到该文件.
如何指定我希望默认分析器为"雪球",因此我不必指定要搜索的属性?
ps我正在使用轮胎宝石.所以请尽可能地回答这个问题.
我如何创建一个Mongoid模型,该模型能够保存在自己的集合中,并嵌入到另一个文档中?
jquery ×2
ajax ×1
devise ×1
javascript ×1
mongodb ×1
mongoid ×1
pg-dump ×1
pg-restore ×1
postgresql ×1
ruby ×1
session ×1
tire ×1