24

Dodałem kilka uprawnień do użytkownika za pośrednictwem interfejsu administratora.Użytkownik Django get_all_permissions() jest pusty, podczas gdy user_permissions jest ustawiony na

Z jakiegoś powodu wszystkie funkcje perm fail, np

>>> user.get_all_permissions() 
set([]) 

Ale dostępu bezpośrednio do stołu, działa:

>>> user.user_permissions.all() 
(list of permissions as expected) 

Co może spowodować "get_all_permissions" (i wszystkie funkcje Perm jak has_perm()) na porażkę?

Dzięki

+2

Co to są backendi uwierzytelniania w swoim settings.py? – satoru

Odpowiedz

42

miał ten sam problem. Zgaduję, że w pewnym momencie użyłeś samodzielnie utworzonego AUTENTYCZNEGO_BACKENDU? Większość przykładów w Internecie (w tym dokumentacja DJANGO 1.0!) Nie wspomina, że ​​backendy są również odpowiedzialne za obsługę uprawnień.

jednak nic wielkiego: W co backend pliku kod rezyduje, to ten import:

from django.contrib.auth.backends import ModelBackend 

następnie upewnij się, backend napisałeś rozciąga ModelBackend, np

class EmailBackend(ModelBackend): 

Gdyby w porządku.

+0

Tak, dowiedziałem się później. Zmodyfikowałem backend, aby obsługiwać nazwy użytkowników niewrażliwe na wielkość liter i łamałem uprawnienia. – Boris

+0

+1, miał dokładnie ten problem! – Agos

+2

dałem ci +1 b/c brzmisz jak dobry gość – abbood

Powiązane problemy