Программный вход удался, но не распознан

У меня есть функция магнитной ссылки, когда мое веб-приложение отправляет URL-адрес входа в систему с зашифрованным именем пользователя и одноразовым токеном. При нажатии на ссылку в письме пользователь отправляется на аутентификацию, где я программно регистрируюсь, а затем перенаправляюсь на страницу участника.

Авторизация и вход в систему проходят успешно, но когда я перенаправляюсь на главную страницу, Django отправляет пользователя обратно на страницу входа. Однако, когда я нажимаю на логотип, появляется главная страница.

код аутентификации и входа

def magnet_link_login(request, *args, **kwargs):
    if request.user and request.user.id != None:
        return redirect('stream:home')
    
    magnet_token = request.GET['key'] if 'key' in request.GET else ''        
    decrypted_token = decrypt_text(magnet_token)
    
    split_texts = decrypted_token.split('&')
    if len(split_texts)<2:
        #invalid and redirect to an invalid magnet link page
        pass
    
    uname = split_texts[0].split('=')[1]
    auth_token = split_texts[1].split('=')[1]
    
    #fetch the user record
    acc = Account.objects.get(slug=uname)
    if not acc:
        #error and redirect to an invalid account name page
        pass
    
    #validate and login
    try:
        logged_user = authenticate(username=acc.username,password=auth_token)
        
        if logged_user is not None:
            login(request, logged_user)
            return redirect('stream:home')
        else:
            return redirect('invalid-link')
    except Exception as e:
        print(e)

    return redirect('invalid-link')

Моя страница участника (stream:home) является CBV.

class Home(LoginRequiredMixin, ListView):
    paginate_by = 6
    context_object_name = 'content_list'
    ***SOME STUFF HERE***

    def get_queryset(self):
        *** SOME STUFF HERE***

    def get_context_data(self, **kwargs):
        *** SOME STUFF HERE***
        return context

За исключением LoginRequiredMixin в CBV, я не проверяю логин в явном виде и перенаправляю на страницу входа (страница входа определена в settings.py). Я уже проверил несколько тем с похожими проблемами, но мой вопрос не решен

Что я делаю не так?

<<<Попробуйте удалить метод LoginRequiredMixin и явно проверить, вошел ли пользователь в систему или нет. Проверьте, работает ли это?

Вернуться на верх