問題タブ [django-guardian]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Custom and Unmanaged User Model/Lagacy User Table
I am trying to make django-guardian
work with my custom User model. The model is inherited from AbstractUser
and also from GuardianUserMixin
. Here is the User
model:
The problem I am facing is when I am checking permissions. For example here request.user.has_perm(...)
Here is the error message:
ProgrammingError at /manageDb/mira/follow/14/
relation "users_groups" does not exist
LINE 1: ...sion"."group_id" = "auth_group"."id" ) INNER JOIN "users_gro...
Traceback:
The problem seems to be that guardian
is making query on a table users_groups
, which doesn't exist, instead, it is called auth_groups
, which is created by django.auth
. So the problem comes down to specifying the user group model in guardian
python - django-guardian get_objects_for_user の代替
プロジェクトで django-guardian と django-rest-framework を正常に使用しています。ただし、特定の権限を持つ特定のユーザーのオブジェクトを取得する標準的な方法は、ユーザーが必要な権限セットを持つ何千ものオブジェクトを持っている場合、非常に時間がかかるように見えます。
IN
句に数千の ID を持つクエリが生成されます。これは、Web サーバーとデータベース サーバー間のネットワーク レイテンシを考慮すると、その後に影響を与えるようです。データベースから数千の ID を抽出し、それらを解析してから、IN
句でデータベースに送り返します。
これに対する文書化された回避策はありますか? get_objects_for_user
メソッドをハックしてobject_pk
列を整数に変更すると、インラインの select ステートメントで実行できました。
対現在の声明:
私がまだ試していないさらなる回避策は、ガーディアンによってフェッチされる ID の範囲を何らかの形で縮小することです。たとえば、ユーザーは何千ものオブジェクトを持っていますが、私は過去 6 か月のオブジェクトにのみ関心があります。現時点では、ユーザーを何らかの方法で制限するのではなく、ユーザーの正しいアクセス許可を持つすべての可能なオブジェクト ID をフェッチします。
python - Django REST framework: using object-level permissions without model-level permissions
I have a Django project with API based on the Django REST framework.
Recently I've enabled object-level permissions with the use of django-guardian. However I'm not using model-level permissions framework in my project yet (and until this moment I didn't see any purpose to.)
Now when I turn on DjangoObjectPermissions in my API viewset,
and make an update request to the endpoint for an object that has a proper "change" permission from the Guardian framework, I get a 403 FORBIDDEN
response.
The reason for this response appears to lay in a request dispatch stage:
- DRF checks model permissions in this case.
DjangoObjectPermissions
inherits fromDjangoModelPermissions
.- DRF calls
DjangoObjectPermissions.has_permission()
has_permission()
fails because I'm not using model-level permissions.
What is a proper way to use DjangoObjectPermissions
in my case?
- (A) Implement a custom permission class, inherit it from
DjangoObjectPermissions
and overridehas_permission()
. - (B) Turn the Django's model-level permission framework on just for the sake of it.
- (C) Use this
hackworkaround to skip the check.
python - Django Rest Framework と Guardian を使用して View_Group Perm をグループ テーブルに追加する
Django 1.9、Guardian、および Django Rest Framework を使用してアプリケーションを作成しています。
グループに新しいパーマ (view_group) を追加しようとしています。この新しい権限は、バックエンドを呼び出したときにログイン ユーザーが表示できるグループを制御します。DjangoObjectPermissions を使用しています。
どうやら、django.contrib.auth.models.Group クラスに view_group パーミッションを追加するのは非常に困難なようです。誰かがそれを成し遂げたのだろうかと思っていました。もしそうなら、解決策を教えてください。
この私のモデル
この例外Content Type matching query does not exist が発生しています。私はそれをハッキングしてシステムに追加しようとしていましたが。
python - Django ガーディアン: すべてのユーザーに匿名ユーザーのアクセス許可を与える方法
Django プロジェクトでオブジェクトごとの権限を実装するために django-guardian を使用しています。匿名ユーザーが表示できるオブジェクトを登録ユーザーが表示できないという問題が発生しました。私は、匿名ユーザーが許可を持っている場合、登録ユーザーも同じ許可を持っているべきだと考えていました (匿名ユーザーが何かを実行できるようにして、登録ユーザーが実行できないようにする私の Web サイトの一部を想像することはできません)。何かをする)。
私のプロジェクトには、「パブリック」または「プライベート」にできるオブジェクトがいくつかあります。ユーザーがオブジェクトを「公開」としてマークすると、匿名ユーザーに「view_object」権限が付与されます。PermissionRequiredMixin
私のビューは、次のようにを使用して保護されています。
Django Guardian は、登録ユーザーに匿名ユーザーと同じ権限を与える方法を提供していますか? あるいは、PermissionRequiredMixin をサブクラス化して、ユーザーには権限がなく、匿名ユーザーには権限がある場合にアクションを許可する方法があるのでしょうか?
python - Django Guardianのインポートエラーですが、他の例は機能します
まず、私はdjangoとpythonの両方が初めてです。
私は、django-guardian 1.3.2 を使用している既存のプロジェクトに取り組んでいます。このアプリが展開されているサーバーも 経由で 1.3.2 を使用していることを確認しましたpip list
。
例外の原因を理解しようとしています。
既存の admin.py ファイルがあり、問題なくロードされます。
私は私のものを追加しましたが、これも(私のマシンで)機能します。
アプリをデプロイしましたが、次の例外で起動に失敗しました:
トレースバック (最新の呼び出しが最後): ファイル "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/handlers/wsgi.py"、187 行目、呼び出し 自己。 load_middleware() ファイル "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/handlers/base.py"、47 行目、load_middleware mw_instance = mw_class() ファイル内" /usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/middleware/locale.py"、24 行目、init内 get_resolver(None).url_patterns の url_pattern の場合: ファイル "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/urlresolvers.py"、365 行目、url_patterns のパターン = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) ファイル "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/urlresolvers.py"、360 行目、 urlconf_module self._urlconf_module = import_module(self.urlconf_name) ファイル "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/utils/importlib.py"、40 行目、import_module 内 import (name) File "./sites/zpanel/urls.py", line 19, in admin.autodiscover() File "/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/contrib/admin/ init.py」、29 行目、autodiscover の import_module('%s.admin' % app) ファイル「/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/utils/importlib. py"、40 行目、import_module インポート(名前) ファイル "./common/admin.py"、3 行目、guardian.admin インポートから GuardedModelAdmin ImportError: No module named admin
サーバーは python 2.7.6 を実行しており、私は 2.7.10 を使用しています。他の admin.py ファイルは Guardina.admin から正常にインポートされるため、これは問題ではないと思います。
django - DRF ビューセットの権限チェックが正しく機能しない
ネストされた構造を持つ API を実装しています。
動物園だとしましょう。ケージ ID 1 を取得するためGET /api/cage/
にケージのリストを取得するために呼び出すことができますが、そのケージ内の動物のリストを取得することもできます。GET /api/cage/1/
GET /api/cage/1/animals/
私が抱えている問題は、許可に関するものです。ケージ自体が見える場合にのみ、ケージ内の動物を見ることができるはずです。関連する許可クラスにhas_object_permission()
戻ると、ケージ自体を見ることができるはずです。True
何らかの理由で、has_object_permission()
GET を実行すると呼び出されます/api/cage/1/
がhas_permission()
、 を呼び出すと呼び出されますGET /api/cage/1/animals/
。またhas_permission()
、権限を確認するためのオブジェクトへのアクセス権がありません。何か不足していますか?どうすればいいですか?
私のケージビューセットは多かれ少なかれこのように見えます
私GeneralZooPermissions
のクラスは次のようになります(現時点では)
これは DRF のバグのようです。詳細なルートは、正しい許可チェックを呼び出しません。この問題を DRF 開発者に報告しようとしましたが、報告が消えたようです。次に何をすべきかわからない。アイデア?
DRF で投稿した問題が戻ってきて、応答がありました。チェックのみのようで、意図した動作ではhas_permission()
ありません。has_object_permission()
これは私を助けません。この時点で、次のようなことを行う必要があります。
python - django-guardian と django-rules を一緒に使用できますか?
を使用してオブジェクトごとのアクセス許可を作成できるようにしたいと考えていますdjango-guardian
。
しかし、これらのアクセス許可を取り巻くロジックのレイヤーを追加したいと思います。たとえば、誰かがedit_book
のパーミッションを持っている場合、その本Book
を編集するパーミッションはPages
暗黙的でなければなりません。rules
パッケージは理想的なようです。
django - django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL は、インストールされていないモデル 'auth.User' を参照しています
以下のように私のdjangoとuserenaパッケージを移行した後
Django 1.8 から Django 1.9.7 へ
django-userena 1.4.1 から django-userena==2.0.1
プロジェクトを実行した後、このエラーを下回っています
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL は、インストールされていないモデル 'auth.User' を参照しています
これが私の設定ファイルの INSTALLED_APPS です。
Pythonアプリにいくつかの変更があると思いますが、理由がわかりません...この問題を解決するのに役立つ人はいますか?
前もって感謝します !