2

我希望我的 SSO 自定义策略成为设计使用的唯一策略。我这样做是:

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

这就是我卡住的地方。我想调用该策略,我认为这可以通过以下方式为我完成:

app/controllers/devise/sessions_controller.rb

但是,看起来我的策略没有被调用。

我从我的用户模型中的设计声明中删除了 :authenticatable / :database_authenticable ,这可能会导致问题。
手动创建登录/退出路由后(因为 :authenticable 生成它们),我收到 AbstractController::ActionNotFound 错误。

在这一点上,我不知如何继续。

我的视图应该正确设置以自动提交我从 SSO 应用程序获得的凭据(它在 authlogic 中工作)

有没有人做过类似的事情?

4

2 回答 2

0

我看到其他人使用“:用户”范围,并注意到您的摘录中没有它。也许这导致了原始错误。

config.warden do |manager|
  manager.default_strategies(:scope => :user).unshift :fb_database_authenticatable
end
于 2012-05-02T04:33:16.563 回答
0

除非您分享您如何编写策略,否则我不能肯定地说。简单的答案是你需要一个有效的?方法定义以指定何时使用该策略。由于您只想使用一种策略,那么我希望您的有效方法是这样的..

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

  def authenticate!
   #do authentication
  end
end
于 2011-06-24T21:28:55.563 回答