Найти - Пользователи
Полная версия: Django auth
Начало » Django » Django auth
1
pyOut
Написал следующий код для авторизации пользователей по определенному hash:
class UserAuthMiddleware(object):
    def process_request(self, request):
        if 'auth_hash' in request.GET:
            auth_hash = request.GET['auth_hash']
            try:
                data = signing.loads(auth_hash, max_age=7*24*60*60)
            except signing.BadSignature:
                data = {}
            if data:
                try:
                    user = User.objects.get(username=data['username'])
                except User.DoesNotExist:
                    user = None
                if user:
                    user.backend = 'core.backend.Backend' 
                    login(request, user)

Но вся беда в том что страница открывается лишь та на которой указан GET параметр auth_hash, при переходе на другие страницы требует авторизации. Что я делаю не так и что нужно поправить?
slav0nic
лень проверять, а если request.user = user добавить выше login?

юзать токены в GET небезопасно если они не одноразовые ;)

+ из доки:
When you're manually logging a user in, you must call authenticate() before you call login().

ну и таким вещам наверно место в AuthBackend, а не мидлваре, по дефолту который “django.contrib.auth.backends.ModelBackend” или ты свою юзаешь?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB