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": "regularguy", "password": "password"}
-->
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
왜 내 사용자가 로그인하여 자신의 토큰을 얻을 수 없습니다 어떤 이유로
localhost:8000/api-token-auth/
{"username": "mysuperuser", "password": "superuserpassword"}
-->
{
"token": "9297ff1f44dbc6caea67bea534f6f7590d2161b0"
}
를 만 슈퍼 사용자는 토큰을받을 수 있나요? 고마워요
예, 당신에게 [email protected] 감사합니다 : codyc54321/stack_overflow_nyble_copy.git – codyc4321
나는 코드를 시도하고 django.db.utils.OperationalError'가지고 : 그런 테이블 : 당신이 할 수 있었다 – codyc4321
을 auth_user' 없습니다 이게 효과가 있니?나는 같은 문제에 직면하게된다. – codyc4321