【发布时间】:2015-06-30 16:40:14
【问题描述】:
我的网站使用 django-registration 进行登录/注册。最近我介绍了一些缓存中间件,它在尝试进行背靠背新用户注册时导致 CSRF 违规。
这是我的 settings.py 中的中间件声明:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.UpdateCacheMiddleware', <------
'django.middleware.locale.LocaleMiddleware',
'linaro_django_pagination.middleware.PaginationMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', <------
'djangobb_forum.middleware.LastLoginMiddleware',
'djangobb_forum.middleware.UsersOnline',
'djangobb_forum.middleware.TimezoneMiddleware',
)
不确定这是否是一个真正的问题。中间件语句的顺序重要吗?
看来 CSRF 和 Cache 中间件必须有办法共存。目前我删除了缓存中间件。
【问题讨论】: