1

背景

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

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

测试

该应用程序有一个用户模型,它是使用AuthLogic Quick Rails 示例中概述的简单步骤构建的。登录步骤路由到 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 控制台对此进行了测试,并按照文章中的说明进行操作: 在控制台中使用 Authlogic。这基本上要求您在控制台中执行:

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

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

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

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

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

任何有关故障诊断的提示/建议都将受到欢迎!

4

1 回答 1

1

看起来您正在尝试访问操作中的current_account便捷方法create,但您可能还没有登录,所以我不确定current_account来自哪里。以下代码段是否可以代替您现有的@user_session作业?

# app/controllers/user_sessions_controller.rb
@user_session = UserSession.new(params[:user_session])
于 2013-06-07T03:07:40.233 回答