ruby-on-rails-3 – Rails – 401当我在生产中访问操作时未经授
我正在使用
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. 请帮忙. 谢谢, UPDATE 我想提一下,在我的ApplicationController中,有一个名为check_plan_features的before_filter,它要求的第一件事是除非current_user.blank? #redirects to Admin部分. 我注意到在使用Devise登录后,current_user具有用户的值,但是在重定向到admin部分后,它返回到同一个过滤器,这次,current_user为null.因此,我认为,在尝试访问Admin部分后,用户的会话以某种方式被销毁.但是,由于这只发生在生产环境中,我仍然想知道可能是什么. 解决方法
我只是遇到了这个问题(使用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) 尽管由于向应用程序添加子域而最初更改这一点很重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |