Mehrere Anwendungen mit Authlogic, Benutzer in einer Datenbank zu authentifizieren?

StackOverflow https://stackoverflow.com/questions/1631586

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe die Frage gesehen ein paar Mal auf den Google-Gruppen gefragt, aber niemand scheint mit einer Antwort oder Lösung zu Follow-up .. Ist es möglich, eine zentrale Datenbank für Benutzer Erstellung und Authentifizierung von mehrer Rails-Anwendungen zu verwenden, mit Authlogic?

Es ist keine Option für mich OpenID nutzt gerade jetzt, ich würde gerne, aber mein Klient nicht unterstützt noch .

War es hilfreich?

Lösung

Es scheint, dass es immer noch keine Lösung für die ursprüngliche Frage gestellt worden.

Ich hatte ein ähnliches Problem. Ich hatte mehr Schienen-Anwendungen, und ich musste in der Lage sein, Benutzer auf alle von ihnen zwischen Aktivität zu verfolgen. Also wollte ich eine einzige Anwendung haben Anwender zur Verwaltung und Verfolgung und alle anderen Anwendungen zu dieser Benutzerdatenbank in Verbindung bringen würden zu authentifizieren.

Ich war schon mit Authlogic für einige andere Projekte, so dass ich hatte gehofft, dass es so zu ändern, einige Konfigurationseinstellungen so einfach sein würde.

Hier ist meine Lösung:

habe ich das Haupt User-Tracking-Anwendung. Es war nichts Besonderes über die Anwendung. Es erlaubt Benutzer zu registrieren, anmelden, abmelden, usw. Sobald Benutzer angemeldet wurden sie dann zu den anderen Anwendungen navigieren können.

In der environments.rb Datei meiner Benutzeranwendung und jede Anwendung, um mit der Basisanwendung zu authentifizieren, müssen Sie den Sitzungsschlüssel einzurichten und Domain gleich sein.

config.action_controller.session = {
  :session_key => '_my_app_session',
  :secret      => '_long_secret_session_key_here',
  :domain => ".basedomain.com" 
}

Jeder meiner Anwendungen sind unter ihrer eigenen Sub-Domain, wie app1.basedomain.com app2.basedomain.com Ich bin mir nicht sicher, ob das funktionieren würde sonst ohne einige weitere Änderungen.

Bei jeder Anwendung Erstellen der Usersession

class UserSession < Authlogic::Session::Base   
end

und User-Modelle.

class User < ActiveRecord::Base
   establish_connection "users_database"
   acts_as_authentic 
end

Was in diesem User-Modell unterscheidet, ist, dass es nun die Herstellung der Verbindung Methode hat. die „users_database“ ist in der database.yml Datei und verweist auf die Datenbank für die zentrale Benutzerverwaltung Anwendung.

Ich habe nicht so weit wie Log-in mit und melden Sie sich in meinem Unteranwendungen, aber wenn Sie getan haben würden Sie die UserSessionsController auch schaffen müssen.

In jeder Anwendung, die Authentifizierung verwendet, ich einige Hilfsmethoden in der Application enthalten, zum Beispiel:

   def current_user_session
      return @current_user_session if defined?(@current_user_session)
      @current_user_session = UserSession.find
   end

   def current_user
      return @current_user if defined?(@current_user)
      @current_user = current_user_session && current_user_session.record
   end

   def require_user
     unless current_user
       store_location
       redirect_to 'http://main_user_login_page'
       return false
     end
   end

Dann kann ich ‚require_user‘ in meinem Controller verwenden, wo ich die Authentifizierung will wie ich kann in meiner Haupt-Benutzeranwendung.

Hoffe, das hilft.

Chase M Grau

Andere Tipps

Aus gestalterischer Sicht haben Sie sich Gedanken über die Schaffung eines Systems gewidmet, um die Benutzerinformationen und Authentifizierung zu behandeln. Dann haben Ihre andere Anwendungen auf dieses System über eine sichere API, höchstwahrscheinlich intern verbinden. Sie können Ihre Datenbanken getrennt halten und die Benutzerdatenbank sicher zu halten, indem nur den Zugriff über die API ermöglicht.

Die kurze Antwort ist „Ja“. Sicher. ein Benutzermodell zwischen den Anwendungen zu teilen, ist nicht grundsätzlich verschieden von den gemeinsamen Nutzung jeden andere Modelltypen zwischen Anwendungen. Heck, Sie könnten möglicherweise sogar Ihre Benutzerdaten über REST mit Active ziehen, wenn Sie es nicht etwas dagegen langsam ein wenig zu sein.

Aber wenn Authlogic und Lösungen, wie sie sind keine Locked-in-Business-Einschränkung gibt es andere Möglichkeiten, SSO (Single Sign-on) neben nur OpenID zu behandeln. Schauen Sie sich auf RubyCAS , Castronaut (vielleicht mit Casablanca für einen Client) oder für einen völlig anderen Ansatz , Hancock .

Ich denke, der beste Weg, Yould sein, ein OpenID System zu implementieren.
Es hatte können Benutzer nicht authentifizieren nur auf Ihre Anwendungen, sondern fast überall mit ihrem Benutzernamen und Passwort ein.

Persönlich wie OpenID ich nicht, neigen die Menschen, es ist ein wenig sicherer zu denken, als es ist.

Was Ihre Frage, ich sehe keinen Grund, warum Sie nicht tun können, werden Sie etwas mehr Sorgfalt auf Sicherheit setzen müssen (Benutzer kann nur melden Sie sich bei der App / Domain er darf für ex).

Das einzige Problem, das ich sehe, ist, dass Sie nicht nur eine Tabelle zwischen Anwendungen gemeinsam nutzen können, standardmäßig werden Sie die gleiche Datenbank für alle Ihre Anwendungen , ein no-no verwenden.

Aber es gibt eine Möglichkeit, Sie ein Modell in eine andere Datenbank verweisen kann, würde ich die [link text] [1] gem empfehlen. obwohl es für eine ganz andere Verwendung gemeint ist, sollten Sie in der Lage sein, es zu benutzen jede Ihrer Anwendungen auf eine bestimmte, andere Datenbank Punkt für das Modell Ihres Benutzers.

[1]: http://github.com/fiveruns/data_fabric data_fabric

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top