【问题标题】:Restful_authentication plugin not workingRestful_authentication 插件不起作用
【发布时间】:2010-01-14 07:56:24
【问题描述】:

我正在为 Ruby on Rails 使用 restful_authentication 插件。一切似乎都很好,只是似乎根本没有创建用户会话。我有下面的创建方法。似乎 self.current_user 正在设置,但实际会话从未创建。应该何时以及如何定义 current_user_session。我的应用程序控制器中有该方法,但这总是失败的地方。

def create
logout_keeping_session!
user = User.authenticate(params[:login], params[:password])
if user
  # Protects against session fixation attacks, causes request forgery
  # protection if user resubmits an earlier form using back
  # button. Uncomment if you understand the tradeoffs.
  # reset_session
  self.current_user = user
  new_cookie_flag = (params[:remember_me] == "1")
  handle_remember_cookie! new_cookie_flag
  redirect_back_or_default('/')
  flash[:notice] = "Logged in successfully"
else
  note_failed_signin
  @login       = params[:login]
  @remember_me = params[:remember_me]
  render :action => 'new'
end

结束

应用程序控制器

  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.user
  end

UserSession 模型为空

【问题讨论】:

    标签: ruby-on-rails ruby authentication ruby-on-rails-plugins


    【解决方案1】:

    如果可以避免,请不要使用 restful_authentication。有许多更好的替代方案实际上是 RESTful 并且维护得更好:

    【讨论】:

    • Devise 实际上是建立在另一个名为 Warden 的 gem 之上的,它本身就非常棒。
    【解决方案2】:

    当您说会话时,您实际上是指会话还是这是一些 restful_authentication 魔术?

    我曾经使用过restful_authentication,一些较旧的应用程序仍在使用。但是,他们使用基于 cookie 的会话管理,而不是用户会话模型。

    【讨论】:

      【解决方案3】:

      您使用的是 rails 2.3.5 吗?

      我在使用 redirect_to 时看到了这个问题,基本上是在重定向之前删除了添加到会话中的所有变量。

      恢复到 2.3.4 似乎解决了我的问题,但是灯塔上有一个关于 rails 2.3.X 中会话的一些怪异的错误

      这对你来说可能不是同一个问题,但我花了几个小时才意识到恢复解决了我的问题,所以可能值得快速测试一下。

      【讨论】:

        猜你喜欢
        • 2010-11-19
        • 2010-10-30
        • 2011-10-30
        • 2014-08-29
        • 2018-09-03
        • 2018-11-20
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多