【问题标题】:Authlogic and Invalid SessionsAuthlogic 和无效会话
【发布时间】:2013-06-03 06:09:24
【问题描述】:

背景

我继承了一个较旧的 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 对象上的错误时,我得到字符串“Login is not valid

此外,我已经通过 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>

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

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

【问题讨论】:

    标签: ruby-on-rails ruby authlogic


    【解决方案1】:

    看起来您正试图在您的create 操作中访问current_account 便捷方法,但您可能尚未登录,所以我不确定current_account 的来源。以下 sn-p 是否可以代替您现有的 @user_session 分配?

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

    【讨论】:

    • 感谢您的建议 - 将尝试并进一步评论。
    • 不走运 - 仍然失败并出现错误 [“登录无效”]。怀疑 UserSession 可能存在另一个问题。
    • 您确认您使用的凭据正确吗?也许尝试创建一个全新的用户,例如UserSession.create(:login => "bjohnson", :password => "my password", :remember_me => true)。然后尝试登录该帐户?
    • 谢谢 - 成功了。我创建了一个新用户并能够验证它是否正常工作。感谢您的建议。
    猜你喜欢
    • 2018-08-05
    • 2011-10-05
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多