Tag: cookies

如何在Rails控制器中动态设置cookie名称

我想在我的rails应用程序中动态设置cookie名称。 我可以像这样设置cookie: cookies[:users_id] = current_user.id 我想动态设置cookie名称。 我试过这样的,它不起作用: cookies[:’users_id_#{current_user.id}’] = current_user.id 这怎么可能?

没有设置Rails 4会话cookie

我正在构建Rails 4应用程序。 它主要是json api所以我也在我的应用程序中使用rails-api gem。 我有一个扩展ActionController :: API的 ApiControllers。 现在我需要添加一些经典的服务器渲染HTML模板。 这些渲染的控制器扩展了ActionController :: Base 。 我有问题,rails没有在浏览器中设置cookie,所以我的会话根本不起作用。 我尝试在其中启动新的Rails 4应用程序和会话,一切正常。 我不知道为什么它在我的应用程序中不起作用。 缺少set-cookie标头 。 有任何想法吗?

从模型访问cookie

我听说尝试在Rails中访问模型中的cookie是完全不可能的。 不过这是我的情况: 这是一个管理费用的小应用程序。 金额以欧元存储在数据库中,但用户可以设置不同的货币,以便以用户想要的货币显示金额。 为此我已经覆盖了金额属性getter和setter,因此在获取和设置金额时应用汇率。 问题是我将用户选择的货币存储在cookie中,而覆盖的setter和getter在Expense模型中定义,显然: def quantity=(quantity) update_rates write_attribute(:quantity, @eu_bank.exchange(100*quantity.to_i, cookies[:currency], “EUR”).cents) end def quantity update_rates c = read_attribute(:quantity) @eu_bank.exchange(c.to_i, “EUR”, cookies[:currency]).cents/100.0 end 我该如何处理这种情况?

在cookie名称中使用括号(Rails)

当尝试编写/读取名称中包含括号的cookie时,似乎Rails无法处理此问题。 例如: cookies[“example[]”] = “value” 这导致cookie名称为“example%5B%5D”而不是“example []”。 类似地,如果我已经设置了名为“example []”的cookie,那么看起来Rails无法通过调用cookies.delete “example[]”来正确删除它,因为[和]字符正在被编码。 有人知道怎么修这个东西吗?

尝试创建cookie时未定义的方法`permanent’

我创建了一个模块,因此我可以快速创建用户,以用户身份登录,删除用户并注销用户。 这是一个简化的例子: module UserAuth def sign_in(user) cookies.permanent[:remember_token] = ‘asda’ end end 但是,如果我运行此规范: describe ‘UserAuth’ do include UserAuth context ‘signed up’ do let(:user_1) { FactoryGirl.build(:user) } before { sign_up user_1 } contex ‘signed in’ do before { sign_in user_1 } it {} end end end 我收到此错误: undefined method `permanent’ for # 我觉得奇怪的是, cookies对象是可用的,但这种permanent方法不是出于某种原因。 我可以通过在UserAuth模块中包含另一个模块来解决此问题吗? 如果是这样,这个模块的名称是什么?

从视图中设置cookie,然后从Rails中的Controller读取它

我想使用Javascript在Rails视图中设置cookie值,然后使用Controller来读取此cookie。 这可能与Rails有关,我应该怎么做呢? 我的情况:我有一个输入字段(比如地址),当用户第一次访问我的网站时,需要填写该输入字段。 然后,用户使用Omniauth登录。 我想坚持地址,直到他登录后。 更新:我能够在客户端添加到document.cookies。 但是,cookies [“something”]从Rails结尾返回nil。 以下是cookie哈希: #”BAh7Ck==–776b2fcfcd63d3c84d2b1de5327e277499add6d4″, “fbsr_1505068851081″=>”mqZeyvoRC”}, @signed=#<ActionDispatch::Cookies::SignedCookieJar:0x007 @parent_jar=#, @verifier=#>>

Rails 4加密Cookie重播攻击

我最近升级到Rails 4并切换到加密的cookie作为会话存储。 不幸的是,这似乎意味着重放攻击是可能的,即如果用户退出,任何cookie都不会失效,并且可以用于在没有用户/通行证的情况下进行身份validation。 据我所知,这是加密cookie如何工作的一个缺陷(如果我错了请赐教!),所以我的问题是:是否有一个可接受的解决方案来阻止使用加密cookie的重放攻击?

RSpec与Cookies – 即使应用程序正常工作(模拟已登录的用户),测试也会失败

我正在阅读Michael Hartl的“Ruby on Rails”Turorial“但我被困在这里。 我写了测试以检查用户编辑/更新的用户授权,我还编写了控制器代码, 它的工作原理如下: 如果用户未登录并尝试访问users#edit或users#update则会将其重定向到登录页面 如果用户已登录并且他尝试编辑另一个用户,则会将其重定向到根目录 问题是在测试第2点的规范中,我检查发送PUT请求到user_path我被重定向到root但运行rspec我得到以下错误: Failures: 1) Authentication authorization as wrong user submitting a PUT request to users#update Failure/Error: specify { response.should redirect_to(root_url) } Expected response to be a redirect to but was a redirect to # ./spec/requests/authentication_pages_spec.rb:73:in `block (5 levels) in ‘ 它似乎被重定向到signin_url而不是root_url ,就像用户根本没有登录一样……这就是我猜测导致问题的原因。 应用程序在cookie中存储令牌以对用户进行身份validation。 为了测试这个,我编写了一个名为signin_user(user)的辅助方法,并将其放在spec/support/utilities.rb文件中: # spec/support/utilities.rb def sign_in(user) […]

Rails – 如何在不重新加载页面的情况下刷新页面?

Rails – 如何在不重新加载页面的情况下刷新页面? 我正在构建一个应用程序,它具有每次人们访问该页面时都会发出随机数(随机记录)的function,但问题是当用户访问该页面时,会给出一个随机数,但该数字会发生变化再次,如果用户刷新页面。 即使用户刷新页面或返回该页面时,如何保留该随机数,随机数保持不变。 我想在浏览器中禁用刷新function会阻止用户刷新页面,从而阻止他们更改随机数,但在研究之后,看起来禁用刷新function似乎是一个好主意。 有没有其他方法可以实现它? —- —-更新 我试过了 #posts_controller.rb def new @random = cookies[:stuff] ||= Stuff.random end 并且在我的视图中调用@random.content ,因为我只想要Stuff模型的内容,第一次没问题但是当我刷新页面时,它为我提供了undefined method ‘content’ for “#”:String什么事了?

如何在Rails中禁用cookie的URL编码

我有一个Rails应用程序,必须与一个非常古老的遗留应用程序共存。 旧应用程序查找具有包含特定字符串的值的cookie。 不幸的是,遗留cookie中的字符通常包含斜杠。 我遇到的问题是,当Rails应用程序写入cookie时,它首先执行URL编码,导致旧应用程序因为cookie值不正确而中断。 我通过编辑文件cookie_performance_fix.rb (路径: ./actionpack-1.13.5/lib/action_controller/cgi_ext/cookie_performance_fix.rb cookie_performance_fix.rb )在Rails 1.13.5中工作了 为了使这个工作,我改变了代码,如下所示: def to_s buf = “” buf << @name << '=' if @value.kind_of?(String) rails code. #buf << CGI::escape(@value) buf << @value else #buf << @value.collect{|v| CGI::escape(v) }.join("&") buf << @value.collect{|v| (v) }.join("&") end 这实际上工作正常,直到我决定将Rails升级到版本2.3.2 在Rails 2.3.2中, cookie_performance_fix.rb文件不再存在。 我查看了同一个目录,发现了一个名为cookie.rb的文件,我尝试以类似的方式进行修改。 def to_s buf = ” buf << […]