【问题标题】:Not able to set a current_user using Authlogic on Rails 3.0.1无法在 Rails 3.0.1 上使用 Authlogic 设置 current_user
【发布时间】:2010-12-03 10:48:13
【问题描述】:

我的官方 authlogic 插件在 Rails 2.3.5 上完美运行。我将我的应用程序转换为 Rails 3.0.1,但现在遇到了一些问题。

我在我的 gemfile 中包含了以下 authlogic gem gem 'authlogic', :git => 'git://github.com/odorcicd/authlogic.git', :branch => 'rails3'

当用户登录时,会话被保存。调用该用户会话时,返回值为 nil。 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' 的 flash 通知,但未设置 current_user。我也用官方的 authlogic 插件试过这个,没有任何改变。我在这里遗漏了什么吗?

谢谢!

提姆

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 authlogic


    【解决方案1】:

    我遇到了这个确切的问题。出于某种原因,它干扰了基本身份验证 - 为了修复它,我将 allow_http_basic_auth 设置为 false。

    class UserSession < Authlogic::Session::Base
    
      allow_http_basic_auth false
    
    end 
    

    【讨论】:

    • 哇,这就像一个魅力!我整天都在想办法解决这个问题。我希望我能给你更多的支持。非常感谢!
    • 是的,这也为我解决了这个问题。 UserSession.find 总是返回 nil。
    • 我的天!我整天都在为此苦苦挣扎。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多