Django - изменение URL для перенаправления из промежуточного программного обеспечения на лету - PullRequest
0 голосов
/ 26 сентября 2019

Я создаю единый вход в систему, предназначенный для использования по ссылкам, отправленным по электронной почте.

Каждая ссылка должна автоматически подключать пользователя (SSO) и иметь возможность многократного нажатия (у них есть TTL, которыйзависит от электронной почты)

Работает нормально, но я обеспокоен тем, что конечный пользователь делится своим URL-адресом в социальных сетях (в основном копирует / вставляет URL-адрес, содержащий маркер единого входа), позволяя любому, кто следит зассылка для автоматического входа в систему.

Моей первой попыткой было попытаться удалить параметр GET SSO_TOKEN из моего SSOMiddleware следующим образом:

if remove_token_middleware:
  request.GET._mutable = True  # GET is not mutable by default, we force it
  # Remove the token from the url to avoid displaying it to the client (avoids sharing sso token when copy/pasting url)
  del request.GET[SSO_TOKEN_PARAM]
  request.GET._mutable = False  # Restore default mutability

return login(request, user) if service.get("auto_auth") else None

По сути, я думал, что сSSO_TOKEN находится в объекте request.get, удаление его из него в конечном итоге изменит URL, куда пользователь перенаправляется

В моем контроллере вот как пользователь «перенаправляется» (используя render)

return render(request, 'campagne_emprunt/liste_offres_prets.html', locals())

При использовании render перенаправление отсутствует, и токен единого входа все еще виден в URL (в адресной строке браузера).

Есть ли способ как-то сообщить DjaЧтобы изменить URL-адрес назначения, на лету?

1 Ответ

0 голосов
/ 26 сентября 2019

Итак, чтобы перенаправить, есть встроенная функция перенаправления Django, которую вы используете вместо рендеринга, я думаю .. дать ему шанс,

from django.shortcuts import redirect

def redirect_view(request):
    response = redirect('/redirect-success/')
    return response

и для справки- https://realpython.com/django-redirects/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...