在Rails应用程序(REDMINE)中获取Cookie溢出

问题描述 投票:0回答:1
ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow):
actionpack (4.2.8) lib/action_dispatch/middleware/cookies.rb:529:in `[]='

按下redmine rest API时出现此错误。像url1这样的简单get api可以正常工作,但是当涉及到复杂的url作为url2时,应用程序将引发Cookie溢出。

url1: localhost:3000/issues.json?page=1&limit=100
url2: http://localhost:3000/issues.json?key=292fe116d13d5f5db8a0e3f2b031f1e57ad1c882&f[]=project_id&op[project_id]=!&v[project_id][]=505&f[]=project_id&op[project_id]=!&v[project_id][]=478&f[]=project_id&op[project_id]=!&v[project_id][]=366&f[]=project_id&op[project_id]=!&v[project_id][]=419&f[]=project_id&op[project_id]=!&v[project_id][]=343&f[]=project_id&op[project_id]=!&v[project_id][]=345&f[]=project_id&op[project_id]=!&v[project_id][]=512&f[]=project_id&op[project_id]=!&v[project_id][]=487&f[]=project_id&op[project_id]=!&v[project_id][]=473&f[]=project_id&op[project_id]=!&v[project_id][]=509&f[]=project_id&op[project_id]=!&v[project_id][]=520&f[]=project_id&op[project_id]=!&v[project_id][]=404&f[]=project_id&op[project_id]=!&v[project_id][]=440&f[]=project_id&op[project_id]=!&v[project_id][]=389&f[]=project_id&op[project_id]=!&v[project_id][]=467&f[]=project_id&op[project_id]=!&v[project_id][]=501&f[]=project_id&op[project_id]=!&v[project_id][]=474&f[]=project_id&op[project_id]=!&v[project_id][]=471&f[]=project_id&op[project_id]=!&v[project_id][]=480&f[]=project_id&op[project_id]=!&v[project_id][]=507&f[]=project_id&op[project_id]=!&v[project_id][]=383&f[]=project_id&page=1&limit=100

除了用户名和会话中的cas票证,我什么都没有存储:

 request.session['cas'] = { 'user' => user, 'ticket' => ticket, 'extra_attributes' => [] }

我已经在许多论坛中搜索了该解决方案。所有人都说不会保存不必要的数据,但是我要保存的只是用户名和cas票。当我打印会话时,这是结果:

puts(session.to_hash)

{"session_id"=>"fbe61cf9fd1c2ef0111d5d84a1a374c2", "cas"=>{"user"=>"[email protected]", "ticket"=>"ST-27189-R20MW7GBWaLWNJvl1aMi-localhost", "extra_attributes"=>[]}}

但是当如下所示检查会话时,我得到了如下所示的乱码数据。我看到来自GET的ActiveRecord内容和查询参数确实是该会话的一部分。

puts(session.inspect)

[result]: https://textsaver.flap.tv/lists/3caw "Click here for session.inspect output"

由于我是一个新手,刚开始使用ruby上的任何建议,将不胜感激。谢谢。

ruby-on-rails ruby ruby-on-rails-3 session redmine
1个回答
1
投票

具有许多参数的第二个url很长,并且会淹没会话,因为它存在于original_fullpathquery_string和会话中的其他变量中。 Cookie存储有限制-只有4kb。

我建议将会话存储从cookie更改为databasememcache,如链接答案中所述。

© www.soinside.com 2019 - 2024. All rights reserved.