Authlogic和无效会话

时间:2013-06-07 02:59:08

标签: ruby-on-rails ruby authlogic

背景

我继承了一个较旧的Rails应用程序,我正在尝试设置本地副本,并且遇到了用于身份验证的Authlogic gem的问题。设置如下:

  • Rails 2.3.18应用程序是一个遗留应用程序
  • 使用Authlogic进行身份验证。
  • 无法创建有效会话

测试

该应用程序具有用户模型,并使用AuthLogic Quick Rails example中概述的简单步骤构建。登录步骤路由到UserSessions控制器以获取用户参数(登录名和密码),创建新会话然后尝试保存会话,如下所示:

UserSessionsController.rb

....

@user_session = current_account.user_sessions.new(params[:user_session])

if @user_session.save
   # login success
   ....
else
  # login failure
end

这是失败的最后一步。当我检查@user_session对象上的错误时,我收到字符串“登录无效

此外,我已通过rails控制台对其进行了测试,并按照文章Working with Authlogic in console的说明进行操作。这基本上要求在控制台中执行:

Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)

当我通过以下调用模拟UserSession创建时使用此方法:

us=UserSession.new(:login=> "user@gmail.com", :password => "secret")

我收到错误:#<UserSession: no credentials provided>

现在,在这两种情况下,用户身份都存在于数据库中。

非常欢迎任何有关故障诊断的提示/建议!

1 个答案:

答案 0 :(得分:1)

您似乎尝试在current_account操作中访问create便捷方法,但您可能尚未登录,因此我不确定current_account会来自。以下代码段是否可以代替您现有的@user_session作业?

# app/controllers/user_sessions_controller.rb
@user_session = UserSession.new(params[:user_session])