Я использую Pyramids для своего веб-приложения, для чего требуется проверка csrf для каждого запроса. Во время ajax-вызовов токен csrf устанавливается в заголовок для каждого запроса. Все работает отлично для 1 нить с 1 рабочий, но как только я разрешу нескольким работникам, работник 2 не знает токен от работника 1. Как они могут поделиться токены csrf?Проверка CSRF с несколькими рабочими-оружейниками в Pyramid
Приветствия
production.ini для gunicorn:
[server:main] # GUNICORN
use = egg:gunicorn#main
bind = unix:/tmp/gunicorn.sock
workers = 2
threads = 1
preload = true
reload = true
accesslog = gunicorn_access.log
loglevel = info
В пирамиде я только набор:
config.set_default_csrf_options(require_csrf=True)
Мой HTML-skeletion есть:
<input type="hidden" id="hidden_csrf_token" name="csrf_token" value="${request.session.get_csrf_token()}">
И каждый Ajax-запрос:
var csrf_token = $('#' + hiddenCSRFTokenId).val();
...
headers: {'X-CSRF-Token': csrf_token}
Edit: Я использую по умолчанию сессионный завод как
session_factory = session_factory_from_settings(settings)
...
config.set_session_factory(session_factory)
чему я хотел использовать мензурку:
# Beaker cache
beaker.cache.regions = short_term, long_term
beaker.cache.type = memory
beaker.cache.short_term.expire = 3600
beaker.cache.long_term.expire = 86400
# Beaker sessions
beaker.session.type = redis
beaker.session.data_dir = %(here)s/data/sessions/data
beaker.session.lock_dir = %(here)s/data/sessions/lock
beaker.session.autor = true
#beaker.session.type = memory
beaker.session.key = dbas_prototyp
beaker.session.secret = ...
beaker.session.cookie_max_age = 3600
beaker.session.timeout = 3600
beaker.session.cookie_expires = true
beaker.session.url:127.0.0.1:4284
ли я что-то пропустил, настраивая химический стакан?
Значок CSRF является данным сеансом. Как настроить сеансы? Как разные сотрудники используют данные сеанса? –
Сделано редактирование и добавленный код, thx. –