7

私のWebサービス(Django Rest Framework、v2.3.8を利用)がNginxのHTTP基本認証によって保護された場所内にある場合、次のようになります。

location / {
            auth_basic           "Restricted access";
            auth_basic_user_file /path/to/htpasswd;

            uwsgi_pass django;
            include /etc/uwsgi/config/uwsgi_params;
    }

次に、ユーザーが認証されて API にアクセスしようとすると、すべてのビューに対して次の応答が取得されます。

{"detail": "Invalid username/password"}

ビューが認証を必要としない場合でも、Django Rest Framework は HTTP Authorization ヘッダー (Nginx 用) を取得しますか? もしそうなら、私はこれについてどうすればいいですか?

どんな助けでも大歓迎です。

4

2 に答える 2

8

デフォルトでは、Django Rest Framework には 2 つの認証クラスがあります。こちらを参照してください。

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.BasicAuthentication'
)}

必要がない場合は、残りのフレームワーク認証を無効にすることができます。

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': ()
}

BasicAuthenticationまたは、ケースで機能する場合にのみ削除できます。

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication'
)}
于 2013-12-18T16:19:11.060 に答える
2

別の投稿で述べたように、認証クラスの横にコンマを追加する必要があります。そうしないと、TypeError がスローされる可能性があります。

'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication', #comma added here
)

ソース: https://stackoverflow.com/a/22697034/5687330

于 2016-11-02T14:32:05.533 に答える