Djangoのために書かれた両方のJWTパッケージは、私には貧弱なドキュメンテーションの問題を与えてくれたので、DRF-auth_tokenパッケージを試してみます。これは、私が従った良い例です、Django Rest Framework Token Authentication。あなたは理論的にDRF auth_token: "non_field_errors":[[提供された資格情報でログインできません]
localhost:8000/api-token-auth/
に行くことができるはずurls.py:
from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth.models import User
from rest_framework.authtoken import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls', namespace='api')),
url(r'^orders/', include('orders.urls', namespace='orders')),
url(r'^api-token-auth/', views.obtain_auth_token, name='auth-token'),
]
は、ユーザーのトークンを取得するには、私はそれを動作させるために、それを自分自身を書き換えているので、機能していません。
@api_view(['POST'])
def customer_login(request):
"""
Try to login a customer (food orderer)
"""
data = request.data
try:
username = data['username']
password = data['password']
except:
return Response(status=status.HTTP_400_BAD_REQUEST)
try:
user = User.objects.get(username=username, password=password)
except:
return Response(status=status.HTTP_401_UNAUTHORIZED)
try:
user_token = user.auth_token.key
except:
user_token = Token.objects.create(user=user)
data = {'token': user_token}
return Response(data=data, status=status.HTTP_200_OK)
私のバージョンでは動作します:
http://localhost:8000/api/login/customer-login/
{"username": "[email protected]", "password": "wombat"}
-->
{
"token": "292192b101153b7ced74dd52deb6b3df22ef2c74"
}
DRFのauth_tokenは動作しません:それは正しく設定されているようだ
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# third party:
'django_extensions',
'rest_framework',
'rest_framework.authtoken',
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
}
http://localhost:8000/api-token-auth/
{"username": "[email protected]", "password": "wombat"}
-->
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
settings.py。私のDBのすべてのユーザーはトークンを持っています。各ユーザはDB内にis_authenticated
とis_active
です。スーパーユーザーが自分のトークンを取得することができます:何らかの理由
localhost:8000/api-token-auth/
{"username": "mysuperuser", "password": "superuserpassword"}
-->
{
"token": "9297ff1f44dbc6caea67bea534f6f7590d2161b0"
}
を、スーパーユーザだけがトークンを取得することができます:
localhost:8000/api-token-auth/
{"username": "regularguy", "password": "password"}
-->
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
なぜユーザーがログインして、そのトークンを取得することはできませんか?ありがとうございました
はい、 [email protected]ありがとう:codyc54321/stack_overflow_nyble_copy.git – codyc4321
私はあなたのコードを試してみましたが、 'django.db.utils.OperationalErrorました:いいえ、そのようなテーブル: – codyc4321
移行ありえないがにあなたができましたこれを稼働させる?私は同じ問題に直面することが起こります。 – codyc4321