【发布时间】:2011-12-16 22:03:25
【问题描述】:
它应该是这样工作的: 我登录到管理面板,转到汽车/新车并填写字段,按创建,我的列表中应该有一辆新车。 www.autozeep.com
问题是在我按下创建按钮创建新车之前一切正常,服务器日志显示:
NameError (uncaught throw `warden'):
app/controllers/application_controller.rb:9:in `login_required'
app/middleware/flash_session_cookie_middleware.rb:17:in `call'
在开发模式下这工作正常,在生产模式下的服务器上则不是,它是相同的代码,没有任何改变。 更多服务器日志:http://pastie.org/3028350
application_controller
class ApplicationController < ActionController::Base
protect_from_forgery
# filter
def login_required
return true if authenticated?
warden.authenticate!
end
users_controller:http://pastie.org/3028586
我可以编辑汽车,它工作正常,因此来自 cars_controller 的更新和编辑功能没问题,我检查了来自 cars_controller 的新功能和创建功能,但我没有任何能让我了解正在发生的事情的东西. Cars_controller:http://pastie.org/3028452
请帮忙,我已经运行了这个应用程序,客户端正在等待这个问题得到解决。非常感谢大家。
编辑
NameError in CarsController#create
uncaught throw `warden'
Rails.root: /u/apps/zeepauto/releases/20111123173432
Application Trace | Framework Trace | Full Trace
app/controllers/application_controller.rb:9:in `login_required'
app/middleware/flash_session_cookie_middleware.rb:17:in `call'
ENV DUMP
...
....
rack.url_scheme: "http"
rack.version: [1, 0]
warden: Warden::Proxy:-621456458 @config={:default_strategies=>{:_all=>[:database]}, :failure_app=>UsersController, :default_scope=>:default, :scope_defaults=>{}, :intercept_401=>true}
warden.options: {:attempted_path=>"/cars", :action=>"unauthenticated"}
只有在添加新车时才会出现此错误,我可以编辑汽车、新闻、联系人。除了汽车之外的一切。
问题已解决
这个问题是由一些 jquery 库引起的,我在这个表单中使用了 dynamic_form,所以当我在下一个 select_box 中选择汽车名称时,只会出现所选汽车的型号。检查问题(和我的老师一起,我自己不会想到)我们看到当我选择汽车时,一个名为“dynamic_carmodels”的进程正在日志中运行以更新汽车型号列表,此时会话密钥由另一个更改,通常如果更改会话密钥,我登录时启动的会话不再有效,这就是我收到“未经身份验证的错误”的原因。仍然不知道究竟是什么 jquery 导致了这个问题,但最后我解决了这个问题,这不是因为warden 配置。
【问题讨论】:
-
似乎它依赖于 rails_warden,它应该由 bundler 拾取但尝试一下。
-
谢谢,我现在正在尝试。我正在与支持人员交谈以尝试您的建议。
-
如果您正在查看 Warden,我真的建议您使用 Devise,它可以解决很多问题...
-
Warden 很好,只是他没有正确配置。设计需要更多的工作
标签: ruby-on-rails ruby-on-rails-3 warden