我正在使用Ruby On Rails 3.0.9,一切都在开发环境中运行良好。当我切换到Production env,或者我将其上传到我们的服务器时,登录后我将被带回同一个登录页面。当我检查日志时,我可以看到以下内容:
Started POST "/users/login" for 127.0.0.1 at Thu Oct 03 16:48:13 -0300 2013
Processing by UserSessionsController#create as HTML
Parameters: {"user"=>{"password"=>"[FILTERED]", "login"=>"demo_admin"}, "utf8"=>"✓", "authenticity_token"=>"+7AEoVXZ9XiagEymVUnOhFHnck4rgDu883E/ySMlCxQ="}
Redirected to http://localhost:3000/admin
Completed 302 Found in 111ms
Started GET "/admin" for 127.0.0.1 at Thu Oct 03 16:48:13 -0300 2013
Processing by Admin::DashboardController#index as HTML
Completed 401 Unauthorized in 1ms
我正在使用authorization_rules文件来管理访问权限,但我在Dev env上没有问题,正如我之前所说的那样。
如果我在admin/dashboard#index
动作处放置一个断点,它将不会被执行,因为它没有到达。它打破了httpserver文件(我一步一步地调试它),但我无法理解为什么它适用于Dev而不是Prod env。
请帮助。
谢谢, 布赖恩
更新
我想知道,在我的ApplicationController
中,有一个名为check_plan_features
的before_filter,它要求的第一件事是unless current_user.blank? #redirects to Admin section
。
我注意到在使用Devise登录后,current_user
具有用户的值,但在重定向到admin部分后,它会返回到同一个过滤器,这次是{{1 }} 一片空白。 所以,我认为,不知何故,用户的会话在尝试访问Admin部分后被销毁。但是,由于这只发生在生产环境中,我仍然想知道可能是什么。
答案 0 :(得分:1)
我遇到了这个问题(使用rails 4和设计3)。
解决方案是将域声明添加到config/initializers/session_store.rb
文件中,如下所示:
YourAppName::Application.config.session_store :cookie_store, key: '_your_session', domain: {
production: 'production_domain',
development: 'development_domain'
}.fetch(Rails.env.to_sym, :all)
尽管最初由于向应用程序添加子域而更改了这一点很重要。