Django == 1.11.17, Python == 3.6.7
Я хотел бы расширить количество символов, используемых для ключа сеанса.
Lookingв django.contrib.sessions.backends.base.py
:
class SessionBase(object):
...
def _get_new_session_key(self):
"Returns session key that isn't being used."
while True:
session_key = get_random_string(32, VALID_KEY_CHARS)
if not self.exists(session_key):
break
return session_key
...
Я хотел бы изменить 32 -> 64
.
Я попробовал мартышкин-патчинг в одном из моих файлов:
import django.contrib.sessions.backends.base as sessions_base
import django.contrib.sessions.backends.file as sessions_file
from django.utils.crypto import get_random_string
def _get_new_session_key(self):
while True:
session_key = get_random_string(64, sessions_base.VALID_KEY_CHARS)
print("SESSION KEY: {}".format(session_key))
if not sessions_file.SessionStore.exists(self, session_key):
break
return session_key
sessions_file.SessionStore._get_new_session_key = _get_new_session_key
django.contrib.sessions.backends.file.py
реализует SessionStore
и exists()
.
Это решение просто игнорируется Django, и я не получаю показаний для печати, показывающих.
Просто к вашему сведению, это действительно печатаетидентификатор сеанса (с 64 символами), но с ошибками:
sessions_file.SessionStore._get_new_session_key = _get_new_session_key(sessions_file.SessionStore)
File "/Users/.../lib/python3.6/site-packages/django/contrib/sessions/backends/file.py", line 51, in _key_to_file
session_key = self._get_or_create_session_key()
AttributeError: 'str' object has no attribute '_get_or_create_session_key'
Вопросы:
Это неРабота.Это связано с тем, что объект SessionStore
создается из-за промежуточного программного обеспечения, до того как этот файл будет доступен?
Должно ли мое решение быть промежуточным программным обеспечением?(Я бы предпочел monkey-patch)
ПРИМЕЧАНИЕ:
Также пробовал:
1. sessions_file.SessionStore.__dict__["_get_new_session_key"] = _get_new_session_key
<- ошибка возникает <br>2. setattr (session_file.SessionStore, '_get_new_session_key', _get_new_session_key) `<- та же проблема, игнорируется </p>