Разработайте / разработайте собственную стратегию единого входа - PullRequest
2 голосов
/ 20 февраля 2011

Я хочу, чтобы моя пользовательская стратегия SSO была единственной стратегией, которую использует устройство.Я делаю это:

config.warden do |manager|
  manager.default_strategies :my_sso_strategy
end

Вот где я застреваю.Я хочу вызвать стратегию, и я думал, что это будет сделано для меня следующим образом:

app/controllers/devise/sessions_controller.rb

Но, похоже, моя стратегия не вызывается.

Я забрал: authenticatable /: database_authenticatable из объявления devise в моей модели User, думая, что это может вызвать проблему.
После создания маршрутов входа / выхода вручную (потому что: authenticatable делает их), Я получаю сообщение об ошибке AbstractController :: ActionNotFound.

На данный момент я не знаю, как продолжить.

Мои представления должны быть правильно настроены для автоматической отправки моих учетных данных.из приложения SSO (работало в authlogic)

Кто-нибудь делал что-то подобное?

Ответы [ 2 ]

0 голосов
/ 02 мая 2012

Я видел, как другие использовали область ": user", и заметил, что у вас ее нет в вашем отрывке. Возможно, это является причиной исходной ошибки.

config.warden do |manager|
  manager.default_strategies(:scope => :user).unshift :fb_database_authenticatable
end
0 голосов
/ 25 июня 2011

Я не могу сказать наверняка, если вы не поделитесь, как вы кодировали стратегию. Ответ прост: вам нужен действительный? метод, определенный, чтобы указать, когда использовать стратегию. Поскольку вы хотите использовать только одну стратегию, я бы ожидал, что ваш действительный метод будет таким: ..

Warden::Strategies.add(:my_sso_strategy) do 
  def valid?
    true
  end 

  def authenticate!
   #do authentication
  end
end
...