Программный вход удался, но не распознан
У меня есть функция магнитной ссылки, когда мое веб-приложение отправляет 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). Я уже проверил несколько тем с похожими проблемами, но мой вопрос не решен
Что я делаю не так?