I dati di sessione sono impostati nel cookie nello process_response
di SessionMiddleware
. Questa funzione non utilizza alcuna impostazione o request.user
, quindi non si ha alcun modo di sapere all'interno di questo metodo se l'utente è un utente registrato o un utente anonimo. Pertanto, non è possibile disabilitare l'invio del cookie di sessione al browser.
Tuttavia, se si desidera questa funzionalità, è possibile creare sottoclasse SessionMiddleware
e oltre process_response
.
from django.contrib.sessions.middleware import SessionMiddleware
from django.conf import settings
class NewSessionMiddleware(SessionMiddleware):
def process_response(self, request, response):
response = super(NewSessionMiddleware, self).process_response(request, response)
#You have access to request.user in this method
if not request.user.is_authenticated():
del response.cookies[settings.SESSION_COOKIE_NAME]
return response
E è possibile utilizzare il NewSessionMiddleware
al posto di SessionMiddleware
.
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'myapp.middleware.NewSessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
fonte
2013-04-18 06:16:29
La sessione non viene creata se non si accede o non si modifica nel codice. – sbaechler