djangoで権限の問題をデバッグするにはどうすればよいですか?Django権限のデバッグをデバッグ
私はこのようなコードを使用します。「foo.bar」にタイプミスがある場合
if request.user.has_perm('foo.bar'):
どのように私は知っていることができますか?
djangoで権限の問題をデバッグするにはどうすればよいですか?Django権限のデバッグをデバッグ
私はこのようなコードを使用します。「foo.bar」にタイプミスがある場合
if request.user.has_perm('foo.bar'):
どのように私は知っていることができますか?
回答が見つかりました。
--- django/contrib/auth/backends.py (Revision 17045)
+++ django/contrib/auth/backends.py (Arbeitskopie)
@@ -43,6 +43,9 @@
return user_obj._perm_cache
def has_perm(self, user_obj, perm):
+ all_perms=[u'%s.%s' % (ct, name) for ct, name in Permission.objects.values_list('content_type__app_label', 'codename')]
+ if not perm in all_perms:
+ raise Exception('Permission %s does not exist. foo permissions: %s' % (perm, [p for p in all_perms if 'foo' in p]))
if not user_obj.is_active:
return False
return perm in self.get_all_permissions(user_obj)
さて、私はあなたがすべてで定義された権限に見えることができると思います:
from django.contrib.auth.models import Permission
perms = ['%s.%s' % (p.content_type.app_label, p.codename)
for p in Permission.objects.all()]
>>> 'foo.bar' in perms
False
をあなたはむしろジャンゴを変更するよりも、これを行うにはあなた自身のバックエンドを書くことができますだけで(一時的に)backends.pyのコードを変更源:https://docs.djangoproject.com/en/1.3/topics/auth/#handling-authorization-in-custom-backends –