問題タブ [django-webtest]
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.
django - Django-Webtest のユーザー権限キャッシュ
私のプロジェクトでは、カスタム認証バックエンドを使用してユーザー権限を管理し、認証自体はそのままにしておきます (Django によって処理されます)。バックエンドはそれ自体で正常に動作しますが、Django WebTest を使用して構築されたテストで失敗し始めました。調べてみたところ、原因は DWT による別の認証バックエンドの挿入であることがわかりましたsettings.AUTHENTICATION_BACKENDS
。
私のバックエンドは Django のものを直接拡張しますがModelBackend
、DWT 自身のバックエンドは に基づいていますがRemoteUserBackend
、これは最終的には の拡張でもありModelBackend
ます。DWT はメソッドを定義していませんが、has_perm
それでもバックエンドに存在するため、このビットは重要です。
は、テストを実行するときに、問題のユーザー オブジェクトdjango.contrib.auth.backends.ModelBackend
のget_all_permissions()
アクセス許可をキャッシュします。has_perm
DWT のバックエンドが最初にテストされるため、キャッシュにデータが取り込まれ、バックエンドによって設定されたアクセス許可が含まれず、最終的にhas_perm
テストが失敗します。Django 内からコード スニペットを参照します。
バックエンドで何か間違ったことをしているのですか、それとも DWT の作成者による見落としですか? テスト中にカスタム許可ロジックを使い続けるにはどうすればよいですか?