Restful_authentication插件无法正常工作

时间:2010-01-14 07:56:25

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

我正在为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

Application_Controller

  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模型为空

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

当你说会话时,你真的是指一个会话还是一些restful_authentication魔术?

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

答案 2 :(得分:0)

您使用的是rails 2.3.5吗?

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

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

对于您来说这可能不是同一个问题,但是花了我几个小时来实现修复我的问题,所以可能值得快速测试。