Django アプリをリモート サーバーにデプロイしましたが、tastypie はリモート サーバーにログインしているユーザーを認識しません。
現在ログインしているユーザーに属するすべてのオブジェクトをフィルタリングする Tastypie リソースがあります。
def apply_authorization_limits(self, request, object_list):
return object_list.filter(user=request.user)
オブジェクトのエンドポイントで GET リクエストを実行しようとすると、次のエラーが発生します。
int() argument must be a string or a number, not 'AnonymousUser
ログインがうまくいかなかったからだと思いますか?
それともやった?テンプレート ページには、次のコードがあります。
{% if user.is_authenticated %}
Logged in as <strong>{{ user.username }}</strong>
<a href="/users/logout">Logout</a>
{% else %}
<a href="/users/signup">Signup</a>
<a href="/users/login">Login</a>
{% endif %}
また、コードはユーザーのユーザー名を正しく表示します (これは、ユーザーが認証されたことを意味します)。何が起こっている可能性がありますか?ローカル サーバーでは、tastypie API へのすべての HTTP 要求を正常に実行できます。私は AnonymousUser としては知られていませんが、リモート サーバーでは Tastypie に対して AnonymousUser として知られています。
編集:任意のビューで request.user を出力する print ステートメントがあると、正しいログイン ユーザーが取得されます。Tastypie api.py に request.user を出力する print ステートメントがある場合、私は AnonymousUser と呼ばれます。Tastypie では AnonymousUser として認識されているのに、アプリケーションの他の部分では認識されていないのはなぜですか?
編集:次の認証を使用しています:
authentication = Authentication()
認証を ApiKeyAuthentication に変更した場合、GET/POST リクエストごとにユーザー名と API キーをリソースにポストする必要があります。これを行う際の問題は、ユーザー名とビューを照会し、Tastypie エンドポイントに GET/POST を実行する新しい中間ビューを作成する必要があることです。これに対する別の解決策はありますか?2 番目の方法は、ユーザー名と apikey を webapp に埋め込み、JS でそれらの値を取得して GET/POST クエリ文字列に追加することですが、これはセキュリティ上の問題につながる可能性があります。ユーザー名と API キーを持っていると、ユーザーが別のユーザーになりすます可能性があるため、セキュリティ上の問題になります。