簡體   English   中英

編寫自定義的OmniAuth策略

[英]Write a custom OmniAuth strategy

我有Devise的Rail 4應用程序。 我正在嘗試配置OmniAuth以使用我們的企業Ping OpenID Connect IdP。 看來我必須在Rack Middleware中編寫OmniAuth策略。

我采用了'omniauth-digitalocean'寶石(它有自己的策略),並用另一個名稱小心地替換了'digitalocean'的所有引用。 我謹慎地尊重所有情況以符合慣例。

我現在遇到的問題是我似乎有一個私人寶石。 我把它添加到我的Gemfile中:

gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0"

我運行'bundle install'時沒有錯誤。

我用'rake db:migrate'得到了這個錯誤:

fatal: Not a git repository (or any of the parent directories): .git

我相信這是由我的自定義gem中的.gitignore文件引起的。 我刪除了.gitignore文件,現在我得到了:

Devise::OmniAuth::StrategyNotFound: Could not find a strategy with name `Private'. Please ensure it is required or explicitly set it using the :strategy_class option.

這是我在弄清楚我需要編寫n Omniuth策略之前得到的相同錯誤消息,所以我認為這意味着我的寶石未被識別。

所以我不確定到底發生了什么。 我想我正在與這個私人寶石掙扎。 但它也可能是一個OmniAuth問題。

有人曾經使用過OmniAuth的私人OpenID Connect IdP嗎?

我使用我的自定義Omniauth OAuth2策略獲得了相同的“無法找到具有名稱的策略......”。

我根據這些說明https://github.com/intridea/omniauth-oauth2創建了一個自定義策略,並將我的文件保存在config / initializers中 - 然后將該模塊加載到ruby boot上。

我覺得我應該能夠將它存儲在lib /文件夾中,但無法確定文件名或文件夾結構應該是什么!

關於“Not a git repo”的“致命”錯誤來自於寶石使用'git ls'的事實。 只運行“git init”應該修復它。 我做到了,然后致力於github。

“找不到具有名稱的策略...”錯誤通過正確加載自定義gem來解決。 我通過將此行添加到我的Gemfile中來做到這一點:

gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0

你需要添加:

require 'strategies/private'

到config / devise.rb的頂部。 這指向/lib/strategies/private.rb中的策略文件

在您的設計/初始化程序文件中檢查並確保您具有要配置的身份驗證的正確名稱示例:

 config.omniauth :facebook, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' 
 config.omniauth :private, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' 
 config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM