2014-04-25 17 views
5

DÜZENLEME: Bunu nasıl yapmak istediğimi değiştirdim, google kullanarak düzenleme girişlerini beyaz listeye eklemek için bir MySQL tablosu kullanacağımı düşünüyorum. Değiştirilen soru burada yayınlanmıştır: Restrict Login with Google OAuth2.0 and Devise to Specific Whitelist Table using RubyGoogle ile giriş yapın OAuth2.0 ile Kesin Üzerinde Beyaz Listeye Özgü Etki Alanı Adını Girin

Pekala, bu yüzden, Devise ve Omni-Auth2 ve sadece google'ı kullanarak raylardaki web sitem için kısıtlı kimlik doğrulaması almayı deniyorum. Her şey şu ana kadar çalışıyor, ancak sadece belirli bir alandan gelen e-postaların kabul edilmesini istiyorum. Bunu yapmak için zaten açıkım.

Biraz googling yaptım, ancak bazı PHP kullanıcılarının yerel olarak google API istemcisini kullanmam nedeniyle benden biraz daha yerel dosyaları var gibi görünüyor? Tam olarak emin değilim, genel olarak kodlama konusunda oldukça yeniyim ve bu kadar ileri gittiğimde şaşırdım. Burada Google Oauth2.0 with Python: How do I limit access to a specific domain?

Ve: Restrict Login Email with Google OAuth2.0 to Specific Domain Name

İkisi kullanmak gibi İşte

bir örnektir "hd: domain" veya benzer bir şey, ama bu ile ilgili sorunlar var gibi görünüyor artı emin değilim Uygulamamda bunu nasıl özümseyeceğim.

Şimdi biraz daha fazla bilgi için, sadece gem devise ve omniauth-google-oauth2'yi kullanıyorum (https://github.com/zquestz/omniauth-google-oauth2) Bu gemiyle yapmanın bir yolu gibi hissediyorum ama yine de tamamen emin değilim. Daha fazla bilgi gönderebilseydim, yardım edersiniz.

Benim omniauth_callbacks_controller:

class User::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def google_oauth2 
    # You need to implement the method below in your model (e.g. app/models/user.rb) 
    @user = User.find_for_google_oauth2(request.env["omniauth.auth"], current_user) 

    if @user.persisted? 
     flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Google" 
     sign_in_and_redirect @user, :event => :authentication 
    else 
     session["devise.google_data"] = request.env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 
end 

cevap

1

Bu soru eski olduğunu biliyorum ama sadece başvuru için bunu yanıtlayan. Config/initializer/omniauth.rb dosyasını değiştirmeli ve sağlayıcınıza "hd" yazmalısınız.

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV["google_client_id"], ENV["google_client_secret"], 
      { 
       hd: 'domain.com' 
      } 
end 
+0

Aynı şeyi gerçekleştirdim, Ama benim için çalışmayacak .. Başka bir çözümünüz varsa, lütfen buraya gönderin –

İlgili konular