Dữ liệu phiên được đặt trong cookie trong số process_response
của SessionMiddleware
. Hàm này không sử dụng bất kỳ cài đặt nào hoặc request.user
, vì vậy bạn không có bất kỳ cách nào để biết bên trong phương thức này cho dù người dùng là người dùng đã đăng nhập hay người dùng ẩn danh. Vì vậy, bạn không thể vô hiệu hóa việc gửi cookie phiên tới trình duyệt.
Tuy nhiên nếu bạn muốn chức năng này thì bạn có thể phân lớp SessionMiddleware
và ghi đè 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
Và bạn có thể sử dụng NewSessionMiddleware
thay cho 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',
)
Nguồn
2013-04-18 06:16:29
Phiên không được tạo nếu bạn không truy cập hoặc sửa đổi nó trong mã của bạn. – sbaechler