を使用しています。 AFAIK Django RESTフレームワークのトークンは、トークンにHTTPヘッダーを使用します。
独自の認証バックエンドを作成できます。非常に簡単です。あなたはauthenticate
とlogin
機能ジャンゴを呼び出す際にここでの例では、
今
class UrlTokenBackend(ModelBackend):
def authenticate(self, token):
try:
user = User.objects.get(token=token)
except User.DoesNotExist:
return None
if not user.is_active:
return None
return user
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
でmyproject/setting.py
AUTHENTICATION_BACKENDS = [
'myproject.backends.UrlTokenBackend',
'django.contrib.auth.backends.ModelBackend'
]
でmyproject/backends.pyであなたのそれぞれに対してユーザーをチェックしますバックエンド。手動で(これはビュー関数である)このように、ユーザがログインすることができます。
from django.contrib.auth import authenticate, login
def user_auth(request):
token = request.GET.get('token')
user = authenticate(token=token)
login(request, user)
return redirect('index')
更新
それとも、this hackを使用して、これだけ(なしカスタムバックエンド)行うことができます。
def user_auth(request):
token = request.GET.get('token')
user = User.objects.get(token=token)
user.backend = 'django.contrib.auth.backends.ModelBackend'
login(request, user)
return redirect('index')
を