Frage

Meine Anwendung hat Benutzerteil und / admin Teil. Es gibt zwei Modelle Account (wie ein Kunde) und Admin, und ich sollte separat Konto und Admin authentifizieren. Admins sollten nicht Konto Teil zugreifen und Konten sollten nicht Admin-Bereich zugreifen. Gibt es eine Lösung für mich oder ich sollte zwei verschiedene Anwendungen für Benutzer und Administratoren schreiben und dann warten, merb 1.1 und montieren sie irgendwie in 1 app? Irgendwelche Ideen?

War es hilfreich?

Lösung

Ihre Frage für mich sehr interessant scheint, hatte ich `ve gleiche Probleme am Anfang. So kann ich verschiedene Lösungen vorschlagen, aus denen Sie auswählen können, eine auf Ihre App-Struktur abhängt.

  1. Wenn alle Benutzer zu einer Klasse gehört hat, aber spezielles Feld (wie Userclass = (: Client: Moderator: admin, etc.) `ll mindestens App Modifikationen haben, überprüfen Sie die Benutzerklasse Parameter in Ihren Controller / Ansichten. ich denke, es für Sie keine gute Idee ist.

  2. Aus der Praxis - Merb Authentifizierungsstrategien zu verwenden. Es ist sehr flexiblen Mechanismus, so dass Sie Klassen auswählen können, mit denen Sie arbeiten möchten.

Zum Beispiel `ll 2 grundlegende Strategien haben: ClientAuth, AdminAuth. Beide werden verwenden unterschiedliche Benutzerklassen (Client, Admin). Alles, was Sie brauchen - individuelle Strategie-Datei erstellen und dann schließen Sie es an Ihren Router wie folgt aus:

authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

authenticate(AdminAuth) do
  match('/admin').to(:controller => AdminController)
end

Alternativ können Sie die Authentifizierung innerhalb Controller verwenden:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

  def index
     ... your stuff ...
  end
end

Auch Sie können sogar nur ein Controller für die Authentifizierung für beide Klassen verwenden beide Strategien wie folgt aus:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

Nur weil Sie verschiedene Authentifizierungsklassen (Admin, Client) für Ihre Strategien festgelegt haben, werden Sie in der Lage sein, Informationen über sie zu erhalten: session.user.class (es ist ein Grund Ruby-Methode ist der Klassenname des Objekts, um herauszufinden)

Hier finden Sie einige nützliche Links:

  1. http://www.slideshare.net/hassox/merb-auth-presentation
  2. http://merbunity.com/tutorials/19
  3. http://www.slideshare.net/carllerche/merb -pluming-the-Router-Präsentation
  4. http : //merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html a = C00000025 & name = Strategie
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top