5

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.

schaable
  • 73
  • 1
  • 4

2 Answers2

16

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

Frederick Cheung
  • 83,189
  • 8
  • 152
  • 174
  • I know, but I would like to avoid using Cookies for the application since it doesn't make sense for an API. According to the documentation of Authlogic, it should be possible to make it work without cookies. – schaable Apr 27 '15 at 22:31
13

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

umeshblader
  • 131
  • 1
  • 4