Я создаю единый вход в систему, предназначенный для использования по ссылкам, отправленным по электронной почте.
Каждая ссылка должна автоматически подключать пользователя (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-адрес назначения, на лету?