Kimlik Doğrulama/Giriş Görünümüm ile ilgili bir sorunla karşı karşıyayım. Bu sistem daha önce çalışıyordu ama yakın zamanda yeni bir sunucuya geçtim ve düzeltilemedi.Django Rest Framework - Request.user her zaman AnonymousUser ve request.POST boş
Auth görünümü aracılığıyla oturum açmaya çalışırken request.user her zaman bir kimlik doğrulama bilgisinde beslemediğim gibi bir Anonim Kullanıcıdır. Request.POST giriş denedim ama boş bir dict gibi görünüyor.
from rest_framework.authentication import BasicAuthentication
class QuietBasicAuthentication(BasicAuthentication):
# disclaimer: once the user is logged in, this should NOT be used as a
# substitute for SessionAuthentication, which uses the django session cookie,
# rather it can check credentials before a session cookie has been granted.
def authenticate_header(self, request):
return 'xBasic realm="%s"' % self.www_authenticate_realm
: Aşağıdaki
class AuthView(APIView):
authentication_classes = (QuietBasicAuthentication,)
def post(self, request, *args, **kwargs):
login(request, request.user)
return Response(OldUserSerializer(request.user).data)
def delete(self, request, *args, **kwargs):
logout(request)
return Response({})
i kullanıyorum kimlik doğrulama sınıftır: Burada
Environment:
Request Method: POST
Request URL: http://45.55.149.3:8000/api/auth/
Django Version: 1.8.3
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'webapp',
'rest_framework',
'djrill')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
456. response = self.handle_exception(exc)
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
453. response = handler(request, *args, **kwargs)
File "/home/appointments-app/appointments/webapp/views.py" in post
40. login(request, request.user)
File "/home/appointments-app/venv/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py" in login
111. request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
Exception Type: AttributeError at /api/auth/
Exception Value: 'AnonymousUser' object has no attribute '_meta'
i başarısız API kimlik doğrulama görünümü vardır:
Burada bir Traceback var
Yapmaya çalıştığınız şey bana açık değil. Genellikle, bir kullanıcı almak için istekte bilgi kullanırsınız, daha sonra oturum açmak için "login (istek, kullanıcı)" olarak adlandırın. "Oturum açma (istek, request.user)" demek mantıklı değil - istek varsa. kullanıcı 'anonim değildi, onları oturum açmaya gerek kalmayacak. – Alasdair
@Alasdair Ajax isteğinde sunulan kimlik bilgilerine erişemiyorum. İstek dediğim gibi.POST boş görünüyor, request.user onları kapsayıcı ya da request.username veya request.password gibi istekte gönderdiğim anahtarlardır. –
'request.body' içeriği nedir? – Alasdair