24

Ho aggiunto alcune autorizzazioni a un utente tramite l'interfaccia di amministrazione.L'utente Django get_all_permissions() è vuoto mentre user_permissions è impostato

Da qualche ragione tutte le funzioni perm non riescono, ad esempio

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

Ma accedendo direttamente al tavolo, funziona:

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

Che cosa può causare i "get_all_permissions" (e tutte le funzioni perm come has_perm()) fallire?

Grazie

+2

Quali sono i back-end di autenticazione in settings.py? – satoru

risposta

42

ha avuto lo stesso problema. Immagino che ad un certo punto tu abbia usato un AUTHENTICATION_BACKEND self-craft? La maggior parte degli esempi sulla rete di questo (inclusa la DOCUMENTAZIONE DJANGO 1.0!) Non menzionano che i Backend sono responsabili anche della gestione delle autorizzazioni.

Tuttavia, non disperatevi: In qualunque backend il file il codice risiede, includono questa importazione:

from django.contrib.auth.backends import ModelBackend 

quindi assicurarsi il backend hai scritto estende ModelBackend, ad esempio:

class EmailBackend(ModelBackend): 

Dovrebbe Stammi bene.

+0

Sì, l'ho scoperto dopo. Ho modificato il back-end per supportare nomi utente insensibili alle maiuscole e ha rotto le autorizzazioni. – Boris

+0

+1, ha avuto questo problema esatto! – Agos

+2

ti ho dato un +1 b/c suona come un bravo ragazzo – abbood

Problemi correlati