首页 > 解决方案 > Ruby on Rails - 设计 e Rails 管理员在生产子域中不起作用

问题描述

我在我的应用程序中使用带有 Devise 的 Rails Admin。该应用程序位于子域 (app.site.com) 上。

在开发环境中,Rails Admin 中的登录运行良好,但在生产环境中,当我尝试登录时(单击登录后),我被重定向到我的主页并且登录没有发生。

rails_admin.rb

RailsAdmin.config do |config|

  config.main_app_name = ["App Name", "Backoffice"]

  config.authenticate_with do
    warden.authenticate! scope: :admin
  end
  config.current_user_method(&:current_admin)

end

路线.rb

require 'sidekiq/web'

Rails.application.routes.draw do

  devise_for :admins, :controllers => { :sessions => 'admin/sessions', :passwords => 'admin/passwords' }
  mount RailsAdmin::Engine => 'admin', as: 'rails_admin'

end

生产日志

I, [2018-11-13T19:20:09.853115 #22050]  INFO -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0] Started POST "/admins/sign_in" for 189.5.44.203 at 2018-11-13 19:20:09 -0200
I, [2018-11-13T19:20:09.854156 #22050]  INFO -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0] Processing by Admin::SessionsController#create as HTML
I, [2018-11-13T19:20:09.854249 #22050]  INFO -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]   Parameters: {"utf8"=>"✓", "authenticity_token"=>"rBlkn39HWWPhIgKEDZtHIxeCgvw2vxu8KBGjbO+W2tjidD3c+a6g04G6tJXURDgoZw+CbDbMTZWugXGhaGewjA==", "admin"=>{"email"=>"web@atua.ag", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Login"}
W, [2018-11-13T19:20:09.855012 #22050]  WARN -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0] HTTP Origin header (https://eventos.facens.br) didn't match request.base_url (http://eventos.facens.br)
D, [2018-11-13T19:20:09.856962 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]   Event Load (0.5ms)  SELECT  "events".* FROM "events" WHERE "events"."is_featured" = $1 AND (event_start > '2018-11-13') ORDER BY "events"."id" DESC LIMIT $2  [["is_featured", true], ["LIMIT", 1]]
D, [2018-11-13T19:20:09.857900 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]   ConfigSite Load (0.3ms)  SELECT  "config_sites".* FROM "config_sites" ORDER BY "config_sites"."id" DESC LIMIT $1  [["LIMIT", 1]]
D, [2018-11-13T19:20:09.859423 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]   Admin Load (0.4ms)  SELECT  "admins".* FROM "admins" WHERE "admins"."email" = $1 ORDER BY "admins"."id" ASC LIMIT $2[["email", "web@atua.ag"], ["LIMIT", 1]]
D, [2018-11-13T19:20:09.971632 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]    (0.3ms)  BEGIN
D, [2018-11-13T19:20:09.974645 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]   Admin Update (0.6ms)  UPDATE "admins" SET "current_sign_in_at" = $1, "last_sign_in_at" = $2, "last_sign_in_ip" = $3, "sign_in_count" = $4, "updated_at" = $5 WHERE "admins"."id" = $6  [["current_sign_in_at", "2018-11-13 21:20:09.970556"], ["last_sign_in_at", "2018-11-13 21:19:44.092713"], ["last_sign_in_ip", "189.5.44.203"], ["sign_in_count", 9], ["updated_at", "2018-11-13 21:20:09.972299"], ["id", 1]]
D, [2018-11-13T19:20:09.979743 #22050] DEBUG -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0]    (4.3ms)  COMMIT
I, [2018-11-13T19:20:09.981750 #22050]  INFO -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0] Redirected to http://eventos.facens.br/
I, [2018-11-13T19:20:09.982042 #22050]  INFO -- : [d3f1ce41-3c11-4a53-896f-a5ef4cdea7d0] Completed 302 Found in 128ms (ActiveRecord: 6.3ms)
I, [2018-11-13T19:20:10.337732 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e] Started GET "/" for 189.5.44.203 at 2018-11-13 19:20:10 -0200
I, [2018-11-13T19:20:10.338570 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e] Processing by HomeController#index as HTML
D, [2018-11-13T19:20:10.340691 #22050] DEBUG -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Event Load (0.5ms)  SELECT  "events".* FROM "events" WHERE "events"."is_featured" = $1 AND (event_start > '2018-11-13') ORDER BY "events"."id" DESC LIMIT $2  [["is_featured", true], ["LIMIT", 1]]
D, [2018-11-13T19:20:10.341635 #22050] DEBUG -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   ConfigSite Load (0.3ms)  SELECT  "config_sites".* FROM "config_sites" ORDER BY "config_sites"."id" DESC LIMIT $1  [["LIMIT", 1]]
I, [2018-11-13T19:20:10.343036 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendering home/index.html.erb within layouts/application
I, [2018-11-13T19:20:10.343457 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_hero.html.erb (0.1ms)
I, [2018-11-13T19:20:10.344713 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_filter_form.html.erb (0.9ms)
I, [2018-11-13T19:20:10.344846 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_search.html.erb (1.2ms)
D, [2018-11-13T19:20:10.347126 #22050] DEBUG -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Event Load (1.8ms)  SELECT  "events".* FROM "events" WHERE (event_start > '2018-11-13') ORDER BY event_start ASC LIMIT $1  [["LIMIT", 8]]
I, [2018-11-13T19:20:10.352858 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_upcoming.html.erb (7.8ms)
I, [2018-11-13T19:20:10.353993 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_newsletter.html.erb (0.9ms)
I, [2018-11-13T19:20:10.354217 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_app.html.erb (0.0ms)
D, [2018-11-13T19:20:10.359666 #22050] DEBUG -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Faq Load (4.9ms)  SELECT  "faqs".* FROM "faqs" ORDER BY question ASC LIMIT $1  [["LIMIT", 6]]
I, [2018-11-13T19:20:10.360394 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_faq.html.erb (6.0ms)
I, [2018-11-13T19:20:10.360524 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered home/index.html.erb within layouts/application (17.4ms)
I, [2018-11-13T19:20:10.363120 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered layouts/_header.html.erb (1.5ms)
I, [2018-11-13T19:20:10.364411 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered shared/_contact_form.html.erb (1.0ms)
I, [2018-11-13T19:20:10.364676 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e]   Rendered layouts/_footer.html.erb (1.3ms)
I, [2018-11-13T19:20:10.365098 #22050]  INFO -- : [6d62d29b-c18f-4197-96e7-19ff116f7a3e] Completed 200 OK in 26ms (Views: 15.5ms | ActiveRecord: 7.4ms)

会发生什么?这与子域有关吗?

谢谢。

标签: ruby-on-railsdeviserails-admin

解决方案


Devise must be redirecting you to your root_path which might have been set on config/routes.rb.

You can have a look at devise's documentation to get what you want.

https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in

The code bellow its shown on the tutorial above. So following the code bellow you might have to overwrite the after_sign_in_path_for devise's method to redirect to the subdomain.

class ApplicationController < ActionController::Base
  protected
    def after_sign_in_path_for(resource)
      request.env['omniauth.origin'] || stored_location_for(resource) || root_path
    end
end

Hope that helped you in some way.

Cheers


推荐阅读