为什么我得到未定义的方法`cookies'?

时间:2015-04-27 18:48:04

标签: ruby-on-rails ruby cookies authlogic rails-api

我正在尝试使用single_access_token为我的rails后端应用程序设置Authlogic(我正在使用rails-api gem)。

我正在关注此示例:http://blog.centresource.com/2013/06/04/using-ember-auth-with-rails-3-and-authlogic/

到目前为止,我可以创建用户,但是当我尝试登录时, user_session.save 会失败:

NoMethodError in Api::V1::UserSessionsController#create
undefined method `cookies' for #<Api::V1::UserSessionsController:0x00000004528cb8>

根据我在这里找到的类似问题,我必须将Authlogic配置为:

  acts_as_authentic do |c|
    c.login_field = :email
    c.maintain_sessions = false
  end

在我的用户模型上。然而,它一直在失败。我假设当UserSession被保存时,Authlogic会尝试更新User上的魔术字段,但我不知道为什么还在尝试使用cookies。

2 个答案:

答案 0 :(得分:6)

本教程假定使用常规rails应用程序,但您使用的是rails-api。默认情况下,rails-api中的控制器不包含处理cookie的中间件。如果您需要cookie,那么您需要添加该中间件:

config.middleware.use ActionDispatch::Cookies

然后在控制器中加入ActionController::Cookies。有关rails-api README

中默认包含的内容的更多信息

答案 1 :(得分:1)

Rails-api确实还有其他步骤来接受Cookie

  1. config.middleware.use ActionDispatch::Cookies添加到config/application.rb
    1. 在预期控制器中的类include ActionController::Cookies的顶部添加

重新启动应用程序