У меня пока есть такое решение:
class MyBasicAuthentication(BasicAuthentication):
def __init__(self, *args, **kwargs):
super(MyBasicAuthentication, self).__init__(*args, **kwargs)
def is_authenticated(self, request, **kwargs):
from django.contrib.sessions.models import Session
if 'sessionid' in request.COOKIES:
s = Session.objects.get(pk=request.COOKIES['sessionid'])
if '_auth_user_id' in s.get_decoded():
u = User.objects.get(id=s.get_decoded()['_auth_user_id'])
request.user = u
return True
return super(MyBasicAuthentication, self).is_authenticated(request, **kwargs)
, которое, кажется, делает то, что я хочу.Если пользователь вошел в систему, то сеанс содержит _auth_user_id
, если нет, ключ отсутствует.
Кто-нибудь может подумать о любых проблемах, которые может вызвать этот подход?