Вход Active Admin для пользователей с правами администратора перенаправляет обратно на страницу входа с правильными учетными данными только в Chrome на localhost - PullRequest
0 голосов
/ 14 марта 2020

У меня есть эта проблема только локально в Chrome, а не в производстве. Это также не проблема в Safari или Firefox. Я не уверен, что вызвало проблему, так как мое единственное недавнее изменение - добавление Redis / Sidekiq для асинхронной обработки заданий, что, похоже, не актуально.

Я очистил свои куки в Chrome, но это все равно не помогло .

Проблема началась после того, как я сбросил локальную базу данных и загрузил мои начальные и примеры данных. Я использовал psql для просмотра данных в базе данных и могу подтвердить, что у меня есть правильные пользователи и администраторы, чтобы иметь возможность проходить аутентификацию через страницу входа Active Admin.

Когда я использую неверно Учетные данные я получаю соответствующий «Неверный адрес электронной почты или пароль». сообщение в Active Admin, которое ожидается, и я вижу ожидаемый вывод в терминале: «Completed 401 Unauthorized» et c.

Когда я использую правильные учетные данные, у меня проблема. Я перенаправлен обратно на ту же страницу (похоже, страница просто обновляется).

В терминале я вижу 302 и перенаправление на страницу администратора, где я не аутентифицирован (не знаю почему), что заставляет меня перенаправить обратно на страницу входа.

Терминальный вывод для неудачной попытки входа в систему в Chrome:

Incoming Headers:
  Origin: http://localhost:3000
  Path-Info: /admin/login
  Access-Control-Request-Method: 
  Access-Control-Request-Headers: 
Started POST "/admin/login" for ::1 at 2020-03-14 01:15:49 -0500
Processing by ActiveAdmin::Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Qirj5VE07/Xv2c3vrwNzmNH3pIfrd615p+OnaXV8cSWVeeIaEBIWRAK8tsquti5KgqmJv/sgmGD84VQCxkmKdg==", "admin_user"=>{"email"=>"mishaherscu@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Login"}
  AdminUser Load (0.2ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  AdminUser Load (0.3ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."email" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["email", "mishaherscu@gmail.com"], ["LIMIT", 1]]
Redirected to http://localhost:3000/admin
Completed 302 Found in 121ms (ActiveRecord: 0.5ms | Allocations: 3418)


::1 - - [14/Mar/2020:01:15:49 CDT] "POST /admin/login HTTP/1.1" 302 93
http://localhost:3000/admin/login -> /admin/login
Started GET "/admin" for ::1 at 2020-03-14 01:15:49 -0500
Processing by Admin::DashboardController#index as HTML
  AdminUser Load (0.2ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
Completed 401 Unauthorized in 2ms (ActiveRecord: 0.2ms | Allocations: 611)


::1 - - [14/Mar/2020:01:15:49 CDT] "GET /admin HTTP/1.1" 302 99
http://localhost:3000/admin/login -> /admin
Started GET "/admin/login" for ::1 at 2020-03-14 01:15:49 -0500
Processing by ActiveAdmin::Devise::SessionsController#new as HTML
  AdminUser Load (0.7ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Rendering /Users/mishaherscu/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activeadmin-2.6.1/app/views/active_admin/devise/sessions/new.html.erb within layouts/active_admin_logged_out
  Rendered /Users/mishaherscu/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activeadmin-2.6.1/app/views/active_admin/devise/shared/_links.erb (Duration: 0.2ms | Allocations: 93)
  Rendered /Users/mishaherscu/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activeadmin-2.6.1/app/views/active_admin/devise/sessions/new.html.erb within layouts/active_admin_logged_out (Duration: 7.5ms | Allocations: 6691)
Completed 200 OK in 34ms (Views: 31.0ms | ActiveRecord: 0.7ms | Allocations: 30877)

Терминальный вывод для успешной попытки входа в систему в Safari:

Incoming Headers:
  Origin: http://localhost:3000
  Path-Info: /admin/login
  Access-Control-Request-Method: 
  Access-Control-Request-Headers: 
Started POST "/admin/login" for ::1 at 2020-03-14 14:05:32 -0500
Processing by ActiveAdmin::Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Zr9FK5J4+tc+/a/RY4ir84YWi/MkIfnTRzAj3sg5yrqb7o8yuIggXu+mT273TN1xzNCFH9EYP2DVYZMte2JUEw==", "admin_user"=>{"email"=>"mishaherscu@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"1"}, "commit"=>"Login"}
  AdminUser Load (0.2ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."email" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["email", "mishaherscu@gmail.com"], ["LIMIT", 1]]
   (0.2ms)  BEGIN
  AdminUser Update (0.2ms)  UPDATE "admin_users" SET "remember_created_at" = $1, "updated_at" = $2 WHERE "admin_users"."id" = $3  [["remember_created_at", "2020-03-14 19:05:32.213581"], ["updated_at", "2020-03-14 19:05:32.213742"], ["id", 1]]
   (0.9ms)  COMMIT
Redirected to http://localhost:3000/admin
Completed 302 Found in 101ms (ActiveRecord: 1.4ms | Allocations: 1308)


::1 - - [14/Mar/2020:14:05:32 CDT] "POST /admin/login HTTP/1.1" 302 93
http://localhost:3000/admin/login -> /admin/login
Incoming Headers:
  Origin: http://localhost:3000
  Path-Info: /admin
  Access-Control-Request-Method: 
  Access-Control-Request-Headers: 
Started GET "/admin" for ::1 at 2020-03-14 14:05:32 -0500
Processing by Admin::DashboardController#index as HTML
  AdminUser Load (0.1ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Rendering /Users/mishaherscu/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activeadmin-2.6.1/app/views/active_admin/page/index.html.arb
  Rendered /Users/mishaherscu/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activeadmin-2.6.1/app/views/active_admin/page/index.html.arb (Duration: 25.0ms | Allocations: 32977)
Completed 200 OK in 26ms (Views: 25.4ms | ActiveRecord: 0.1ms | Allocations: 33501)


::1 - - [14/Mar/2020:14:05:32 CDT] "GET /admin HTTP/1.1" 200 5255
http://localhost:3000/admin/login -> /admin

From rout.rb:

devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)

У кого-нибудь есть идеи о том, что его вызывает и / или как это можно исправить? Также с удовольствием предоставлю дополнительную информацию, если чего-то не хватает.

1 Ответ

0 голосов
/ 15 марта 2020

Это сработало с кучей недоразумений:

https://github.com/codica2/rails-puma-ssl

Я сейчас использую что-то вроде этого для запуска рельсов на localhost: rails s -b 'ssl://localhost:3000?key=server.key&cert=server.crt'

В /etc/hosts мне пришлось изменить 127.0.0.1 localhost на 127.0.0.1 localhost.ssl

Чтобы увидеть localhost, я должен добавить «s», например, Active Admin здесь: https://localhost:3000/admin

...