В моем приложении Rails 4.2 я использую Devise 3.5.10.Как только администратор вошел в систему, я пытаюсь защитить вторым паролем доступ к определенному представлению с помощью authenticate_or_request_with_http_basic только для пользователей с правами администратора.
Вот контроллер:
class ScreensController < ApplicationController
skip_before_action :authenticate_user!
layout 'chat'
def chat
if current_user.admin?
if params["full_chat"] == "true"
authenticate_or_request_with_http_basic('Administration') do |username, password|
username == "admin" && password == "your_password"
end
end
end
end
end
Итак, впредставление ActiveAdmin У меня есть этот link_to:
link_to(I18n.t('admin.full_conversation'), root_url+'chat?full_chat=true#/conversations/'+conversation.id.to_s)
А вот маршрут:
get '/chat' , to: 'screens#chat'
он работает, как и ожидалось, локально, отображая модальное окно с запросом имени пользователя и пароля, прежде чем датьполучает доступ к представлению, если они правы, но как только он развернут на сервере, я получаю код 401 в журналах:
Completed 401 Unauthorized in 11ms (ActiveRecord: 1.2ms)
И сервер застревает в цикле.Любая идея о том, почему поведение локально отличается от поведения на сервере, будет по-настоящему оценена.