2010-11-01 5 views
2

У меня был официальный плагин authlogic, отлично работающий на Rails 2.3.5. Я преобразовал свое приложение в Rails 3.0.1, и теперь у меня возникли проблемы.Не удалось установить current_user с помощью Authlogic on Rails 3.0.1

Я включил следующий authlogic драгоценный камень в моей Gemfile gem 'authlogic', :git => 'git://github.com/odorcicd/authlogic.git', :branch => 'rails3'

Когда пользователь входит в систему, сеанс сохраняется. При вызове этого сеанса пользователя возвращаемое значение равно нулю. UserSession.find returns a nil value, поэтому я не могу назначить current_user.

sessions_controller.rb

def create 
    @user_session = UserSession.new(params[:user_session]) 
    if @user_session.save! 
    flash[:notice] = 'Login successful' 
    redirect_to root_url 
    else 
    render :action => 'new' 
end 
    end 

application_controller.rb

helper_method :current_user, :current_user_session 

private 

    def current_user_session 
    return @current_user_session if defined?(@current_user_session) 
    @current_user_session = UserSession.find 
    end 

    def current_user 
    return @current_user if defined?(@current_user) 
    @current_user = current_user_session && current_user_session.record 
    end 

Когда пользователь входит в систему, флэш-уведомление возвращается с 'Login sucessful' но current_user не установлен. Я также пробовал это с официальным плагином authlogic, и ничего не изменилось. Я что-то упустил?

Спасибо!

Tim

ответ

9

У меня была эта точная проблема. По какой-то причине это мешало базовому auth - исправить его, я установил allow_http_basic_auth в false.

class UserSession < Authlogic::Session::Base 

    allow_http_basic_auth false 

end 
+0

Ничего себе, это работает как очарование! Я пытался понять это весь день. Хотелось бы, чтобы я мог больше продвигать тебя. Огромное спасибо! – Tim

+0

Да, это решило это и для меня. UserSession.find всегда возвращал нуль. – 0x4a6f4672

+0

мой бог! я боролся с этим весь день. –