背景:
我继承了一个较旧的Rails应用程序,我正在尝试设置本地副本,并且遇到了用于身份验证的Authlogic gem的问题。设置如下:
测试:
该应用程序具有用户模型,并使用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>
现在,在这两种情况下,用户身份都存在于数据库中。
非常欢迎任何有关故障诊断的提示/建议!
答案 0 :(得分:1)
您似乎尝试在current_account
操作中访问create
便捷方法,但您可能尚未登录,因此我不确定current_account
会来自。以下代码段是否可以代替您现有的@user_session
作业?
# app/controllers/user_sessions_controller.rb
@user_session = UserSession.new(params[:user_session])