トークン(TokenAuthentication)を使用して、テスト開発のpythonジャンゴ-60。ログイン

序文

今インタフェース・プロジェクトの多くは、ログイン後に、ログインアクセスの後に要求にアクセスするには、このトークンを取る、ログイン時にトークンを返します。
Benpianは、ログインに成功した後、ログインインタフェース、リターン・トークンを記述するためのフレームワークを使用しdjangorestframework。
環境の準備:
Pythonの3.6
Djangoの2.1.2

TokenAuthentication

4つの方法で残りのフレームワークの許可と認証をジャンゴ:

  • BasicAuthenticationこの認証方式は、HTTP基本認証を使用して、ユーザーはユーザー名とパスワードに基づいて締結されます。基本認証は、通常、テスト用にのみ使用可能です
  • TokenAuthenticationこの認証方式は、単純なHTTPベースのトークン認証方式を使用しています。サーバーの設定、ネイティブなデスクトップやモバイルクライアントなど - それは、クライアントの認証トークンの両方に適用されます。
  • Djangoのデフォルトのセッションバックエンドを使用しSessionAuthenticationこの認証方式は、認証します。セッション認証は、あなたのサイトにAJAXクライアントに適用され、同じセッションのコンテキストで実行されています。
  • RemoteUserAuthenticationこの認証方式を使用すると、REMOTE_USER環境変数を設定し、Webサーバーに認証を委任することができます。

Benpian話すTokenAuthentication認証モード、インストール対応するモジュール

djangorestframeworkをインストールするPIP

設定パラメータを追加しますsetting.py

INSTALLED_APPS = (
    ...
    'rest_framework',
    'rest_framework.authtoken',
)

追加REST_FRAMEWORK項目は、rest_framework.authentication.TokenAuthentication上述した第3のトークンの認証方法を述べました。

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',  # token认证
    )
}

authtoken_tokenを生成した同期データベーステーブル

python manage.pyの移行

実行が完了した後は、データベーステーブルのよりがあるでしょうauthtoken_token

トークンケースを生成ログイン

そのような私のログインアカウントとして、いくつかのアカウントのログインを作成し、ユーザーテーブルが付属していませんので、テーブルを再設計する必要、つまり、データのユーザのログイン・アカウント・テーブルであるジャンゴと直接ログインテストで、パスワードは123456です

編集ビュー機能ログviews.py

# views.py
from django.shortcuts import render
from django.http import JsonResponse
from django.shortcuts import HttpResponse
from rest_framework.authtoken.models import Token
from django.contrib import auth
from rest_framework.views import APIView

# 作者:上海-悠悠,QQ交流群:750815713

class LoginViewSet(APIView):
    '''登录方法'''

    def post(self, request, *args, **kwargs):
        username = request.data.get('username')
        password = request.data.get('password')
        user = auth.authenticate(username=username, password=password)
        if not user:
            return HttpResponse({"code": 0,
                                "msg": "用户名或密码不对!"})
        # 删除原有的Token
        old_token = Token.objects.filter(user=user)
        old_token.delete()
        # 创建新的Token
        token = Token.objects.create(user=user)
        return JsonResponse({"code": 0,
                             "msg": "login success!",
                             "username": user.username,
                             "token": token.key})

urls.pyセットのアクセスアドレス

# urls.py
from apiapp import views
from django.conf.urls import url

# 作者:上海悠悠,QQ交流群:750815713


urlpatterns = [
    url(r'^api/v1/login/$', views.LoginViewSet.as_view()),
]

トークンを検査を受けるためには、サインイン

そして、テストが返すトークンインターフェースをログオン、POSTリクエストを使用し、要求タイプのContent-Type:アプリケーション/ JSON

テスト結果

authtoken_token書かれているログインに成功し、トークン表の後

他のインタフェースは、アクセス、次の繰り返しであるユーザ認証トークンにログインする必要があります後

おすすめ

転載: www.cnblogs.com/yoyoketang/p/11517213.html