#ruby-on-rails-4 #saml-2.0
#ruby-on-rails-4 #saml-2.0
Вопрос:
Я пытаюсь заставить этот драгоценный камень работать с приложением Rails 4, которое будет служить поставщиком идентификационных данных SAML.
Меня смущают маршруты и шаблон, которые, как я полагаю, должны быть отображены. В контроллере gem есть это:
def new
render template: "saml_idp/idp/new"
end
Мои маршруты — это всего лишь базовая настройка из примера, которая, как я полагаю, должна соответствовать действию в моем пользовательском контроллере, который наследуется от контроллера gem.
У меня есть это в моем контроллере.
class SamlIdpController < SamlIdp::IdpController
def idp_authenticate(email, password)
true
end
def idp_make_saml_response(user)
encode_SAMLResponse("you@example.com")
end
end
И мой файл routes.rb:
get '/saml/auth' => 'saml_idp#new'
get '/saml/metadata' => 'saml_idp#show'
Итак, чего мне здесь не хватает? Должно быть отображено представление, вместо этого я не получаю ошибок соответствия маршрута. Спасибо.
Ответ №1:
Согласно документу, я думаю, вы пропустили включение SamlIdp::IdpController
модуля
пожалуйста, включайте SamlIdp::IdpController
, а не исключайте.
Надеюсь, это сработает.
Комментарии:
1. Да, попробовал это (как в документе) и получил это в строке включения: TypeError в SamlIdpController#новый неправильный класс типа аргумента (ожидаемый модуль)
2. вы удалили расширенный класс?
3. ДА. Точно так же, как в примере с документом.
4. и, пожалуйста, попробуйте расширить контроллер с помощью ApplicationController
5. Это werid. Получилось так, что он работает с самой настройкой в моем оригинальном сообщении. Теперь можно получить доступ к маршрутам, но получить это сейчас в / saml / auth:
Started GET "/saml/auth" for 127.0.0.1 at 2016-10-20 12:55:46 0200 Processing by SamlIdpController#new as HTML One and only one of authnrequest and logout request is required. authnrequest: false logout_request: false Rendered text template (0.1ms) Filter chain halted as :validate_saml_request rendered or redirected Completed 403 Forbidden in 23ms (Views: 4.0ms | ActiveRecord: 0.0ms)
Ответ №2:
Новое обновление для saml_idp gem хочет быть включено SamlIdp::Controller
в качестве модуля. И класс контроллера может наследовать от ApplicationController
В вашем случае это будет:
class SamlIdpController < ApplicationController
include SamlIdp::Controller
end