2014-04-25 13 views
5

EDIT: Ho cambiato il modo in cui mi piacerebbe farlo penso che userò una tabella MySQL per autorizzare gli accessi elaborati tramite google. La domanda cambiata è postata qui: Restrict Login with Google OAuth2.0 and Devise to Specific Whitelist Table using RubyLimita il login con Google OAuth2.0 a Nome dominio autorizzato specifico su Ruby

OK, sto cercando di ottenere un'autenticazione limitata per il mio sito web ruby ​​on rails utilizzando Devise e Omni-Auth2 e solo google. Tutto sta funzionando finora, ma voglio solo che le email provenienti da un certo dominio vengano accettate. Sono comunque aperto a farlo.

Ho fatto qualche ricerca su google, ma sembra che alcuni utenti di PHP abbiano un po 'più di file locali di me, forse perché usano localmente il client API di google? Non sono esattamente sicuro, dato che sono abbastanza nuovo nel programmare in generale e sono sorpreso di averlo fatto fino a qui.

Ecco un esempio: Google Oauth2.0 with Python: How do I limit access to a specific domain?

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

Entrambi sembrano utilizzare il "hd: dominio" o qualcosa di simile, ma sembra che ci sia problemi con ciò che più non sono sicuro come lo implorerei nella mia app.

Ora, per qualche informazione in più, Io uso solo la disposizione testamentaria gemma e omniauth-google-OAuth2 (https://github.com/zquestz/omniauth-google-oauth2) Mi sento come theres un modo per farlo con quella gemma, ma ancora non del tutto sicuro. Qualsiasi aiuto sarebbe apprezzato se posso pubblicare ulteriori informazioni fammi sapere.

mio 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 

risposta

1

So che questa domanda è vecchio ma rispondere solo per riferimento. È necessario modificare config/initializer/omniauth.rb e aggiungere "hd" al provider.

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

Ho eseguito la stessa cosa, ma non funziona per me .. Se avete altra soluzione, per favore postate qui –

Problemi correlati