2009-09-19 10 views
5

Chciałbym zapytać, jaki jest najczęstszy sposób obsługi bezpieczeństwa opartego na rolach z Google App Engine, Python?Zabezpieczenia oparte na rolach z Google App Engine i Pythonem

W app.yaml znajduje się sekcja "login", ale dostępne wartości to tylko "admin" i "required".

Jak normalnie radzisz sobie z zabezpieczeniami opartymi na rolach?

  • Tworzenie modelu z dwóch tabel: Role i UserRoles
  • wartości w przywozie dla Roles tabeli
  • ręcznie dodać użytkownika do UserRoles
  • Sprawdź, czy użytkownik jest w grupie prawo Roles

Jakikolwiek inny pomysł lub jakakolwiek inna metoda na bezpieczeństwo oparte na rolach, daj nam znać!

Odpowiedz

4

Zrobiłbym to, dodając ListProperty dla ról do modelu reprezentującego użytkowników. Lista zawiera wszystkie role, do których należy dany użytkownik. W ten sposób, jeśli chcesz się dowiedzieć, czy dany użytkownik należy do danej roli (oczekuję najczęstszej operacji), jest to szybki test członkostwa.

Możesz wstawić nazwy ról bezpośrednio do list jako ciągi lub dodać warstwę pośrednią do innej jednostki, określając szczegóły dotyczące roli, aby później łatwo było zmienić szczegóły. Ale ma to koszt runtime dodatkowego RPC, aby pobrać szczegóły dotyczące roli.

Wadą tej metody jest, jeśli chcesz usunąć wszystkich użytkowników z danej roli lub wykonać jakąkolwiek inną operację globalną. Przypuszczam, że możesz oznaczyć rolę "usuniętą", ale nadal masz dane zagracające wszystkie modele użytkowników, dopóki nie wyczyścisz ich ręcznie. Więc jestem ciekawy, co inni sugerują.

+0

+1. Jeśli chcesz zmodyfikować wszystkich użytkowników, którzy mają rolę, możesz wykonać zapytanie na liście właściwości tak samo, jak gdyby była to zwykła właściwość znajdowania wszystkich użytkowników z tą rolą. –

+0

oznacza więc, że nie istnieją dedykowane sposoby radzenia sobie z zabezpieczeniami opartymi na rolach z GAE z Pythonem? nadal musimy obsługiwać go ręcznie? –

+0

Poprawnie - chociaż nie jestem pewien, jak mogłoby wyglądać "dedykowane" rozwiązanie, biorąc pod uwagę szeroką różnorodność potrzeb użytkowników w zakresie uwierzytelniania. –