序文
今インタフェース・プロジェクトの多くは、ログイン後に、ログインアクセスの後に要求にアクセスするには、このトークンを取る、ログイン時にトークンを返します。
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書かれているログインに成功し、トークン表の後
他のインタフェースは、アクセス、次の繰り返しであるユーザ認証トークンにログインする必要があります後