С точки зрения безопасности это выглядит как действительно плохая идея .
Тем не менее, это все еще можно сделать.Я надеюсь, что вы планируете использовать это только для чего-то внутреннего или корпоративной сети.Для действующего легального веб-сайта в Интернете, вероятно, просто возникает проблема.
Вы можете обрабатывать входящие запросы, создав для этого компонент промежуточного программного обеспечения.
(не проверено, но общая идея)
import base64
class UUIDQueryStringMiddleware(object):
def process_request(request):
if request.method == 'GET':
if not request.user.is_authenticated():
uuid = request.REQUEST.get('u', None)
if uuid:
username = base64.b64decode(uuid)
try:
user = User.objects.get(username=username)
request.user = user
except:
pass
# Pass the original request back to Django
return request
Затем вам потребуется настроить это промежуточное ПО для запуска до запуска промежуточного ПО для аутентификации и сеансов ...
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'yourapp.middleware.UUIDQueryStringMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
См. Этот вопрос для получения дополнительной информации о кодировании / декодировании: шифрование и дешифрование строк в python
Я действительно надеюсь, что вы не собираетесь использовать это на живом сайте.