Why I'm getting undefined method `cookies'?

空扰寡人 提交于 2019-12-08 03:27:51

问题


I'm trying to setup Authlogic with single_access_token for my rails backend app (I'm using rails-api gem).

I'm following this example: http://blog.centresource.com/2013/06/04/using-ember-auth-with-rails-3-and-authlogic/

So far, I'm able to create users, but when I try to login it fails on user_session.save:

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

According to similar questions I've found here, I have to configure Authlogic as:

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

on my User model. However, it keeps failing. I'm assuming when UserSession is saved, Authlogic tries to update the magic fields on User, but I have no idea why is still trying to use cookies.


回答1:


The tutorial assumes a regular rails app, but you're using rails-api. By default controllers in rails-api don't include the middleware that handles cookies. If you need cookies then you need to add that middleware:

config.middleware.use ActionDispatch::Cookies

And then include ActionController::Cookies in your controller. There's more info on what's included by default in the rails-api README




回答2:


Rails-api does have additional steps to accept cookies

  1. add config.middleware.use ActionDispatch::Cookies to config/application.rb
    1. add at the top under class include ActionController::Cookies in your expected controller

Restart the application



来源:https://stackoverflow.com/questions/29903668/why-im-getting-undefined-method-cookies

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!