おいしいリソースの認証/承認を設定する方法を知っています:リソースMetaクラスの設定を介して。トップレベルスキーマへのアクセスを認証/承認するにはどうすればよいですか?
たとえば、でリソースを認証/承認でき/api/v1/resource
ますが、スキーマをで認証/承認するにはどうすればよい/api/v1
ですか?
おいしいリソースの認証/承認を設定する方法を知っています:リソースMetaクラスの設定を介して。トップレベルスキーマへのアクセスを認証/承認するにはどうすればよいですか?
たとえば、でリソースを認証/承認でき/api/v1/resource
ますが、スキーマをで認証/承認するにはどうすればよい/api/v1
ですか?
Tastypie のデフォルトのメカニズムを使用して、デフォルトでこれを行う簡単な方法はありません。api.pyファイルの中を見ると、top_level
メソッドに認証/承認メカニズムが適用されていないことがわかります。
あなたが望むものを達成するための最もクリーンな方法は、Api クラスを拡張し、top_level
メソッドをオーバーライドして、ユーザーが結果を見ることができることを確認することだと思います。ただし、これは、Api 自体が自動化と認証の方法を使用しないため、複雑すぎる可能性があります。そのため、Api の urls メソッドをオーバーライドして、top_level
そこにある定義を削除し、それをリソースの URL 内に配置することができます。
この問題も解決しなければなりませんでした。アンナの提案のコード例を次に示します。
class ApiWithAuth(Api):
def top_level(self, request, api_name=None):
auth = MyAuthentication()
r = auth.is_authenticated(request)
if r != True:
return r
return super(ApiWithAuth, self).top_level(request, api_name)
api = ApiWithAuth(api_name='v2')
api.register(MyResource())
api.register(MyOtherResource())
...