2009-09-19 7 views
5

Ich möchte fragen, wie die rollenbasierte Sicherheit mit Google App Engine, Python, gehandhabt wird?Rollenbasierte Sicherheit mit Google App Engine und Python

In der App.Yaml gibt es die "Login" -Sektion, aber die verfügbaren Werte sind nur "admin" und "erforderlich".

Wie gehen Sie normalerweise mit rollenbasierter Sicherheit um?

  • Erstellen Sie das Modell mit zwei Tabellen: Rollen und Userroles
  • Einfuhrwerte für die Tabelle Rollen
  • manuell hinzufügen User Userroles
  • Überprüfen Sie, ob Benutzer in der richtigen Rollen Gruppe ist

Jede andere Idee oder jede andere Methode für rollenbasierte Sicherheit, lassen Sie es uns wissen!

Antwort

4

Ich würde dies tun, indem Sie dem Modell, das Benutzer darstellt, eine ListProperty für Rollen hinzufügen. Die Liste enthält alle Rollen, denen ein bestimmter Benutzer angehört. Wenn Sie also wissen möchten, ob ein bestimmter Benutzer zu einer bestimmten Rolle gehört (ich erwarte die häufigste Operation), ist dies ein schneller Mitgliedschaftstest.

Sie könnten die Rollennamen direkt in die Listen als Zeichenfolgen einfügen oder einer anderen Entität eine Indirektionsebene hinzufügen, in der die Details zur Rolle angegeben werden, sodass später die Details einfach geändert werden können. Dies hat jedoch die Laufzeitkosten eines zusätzlichen RPC zum Abrufen der Details zur Rolle.

Der Nachteil dieser Methode tritt auf, wenn Sie alle Benutzer aus einer bestimmten Rolle entfernen oder eine andere Art von globaler Operation ausführen möchten. Ich nehme an, Sie könnten eine Rolle als "gelöscht" markieren, aber dann haben Sie immer noch Daten, die all Ihre Benutzermodelle überladen, bis Sie sie manuell bereinigen. Ich bin gespannt, was andere vorschlagen.

+0

+1. Wenn Sie alle Benutzer mit einer Rolle ändern möchten, können Sie eine Abfrage für die list-Eigenschaft genauso durchführen, als ob es eine reguläre Eigenschaft wäre, alle Benutzer mit dieser Rolle zu finden. –

+0

Also bedeutet es, dass es keine dedizierten Möglichkeiten gibt, mit Python mit der rollenbasierten Sicherheit von GAE umzugehen? müssen wir noch manuell damit umgehen? –

+0

Richtig - obwohl ich nicht sicher bin, wie eine "dedizierte" Lösung aussehen würde, angesichts der Vielzahl von Authentifizierungsanforderungen, die Menschen haben. –