Какая разница между saveUninitialized и resave?
Средство промежуточного уровня сеанса для Express предоставляет несколько настраиваемых параметров.
resave: 'Заставляет сеанс быть сохранен обратно в хранилище сеансов, даже если сеанс никогда не изменялся во время запроса.'
saveUninitialized: 'Заставляет сеанс, который не инициализирован, сохраняться в хранилище. Сеанс не инициализируется, когда он новый, но не изменен. '
Кажется, что оба варианта предназначены для сохранения немодифицированных сеансов. Какая разница?
Ответы
Ответ 1
Я думал, что начну с базового ответа, до сих пор понимаю, и улучшу его. Важный вопрос был "мертвым" слишком долго.
Из this Я понимаю, что разница заключается в следующем:
(Unmodified 'state' отличается от неинициализированного состояния)
resave: для любого сделанного запроса
- Ничего в сеансе не нужно менять (нет входа и т.д.).
- Изменение требуемого сеанса (вход в систему)
"Заставляет сеанс сохранять даже при немодифицированном"
saveUninitialized. О состоянии сеанса, если он все еще находится в неинициализированном состоянии.
- Не изменяется только, ничего в сеансе не нужно изменять (нет входа и т.д.).
"Заставляет сеанс, который не инициализирован, сохраняться в хранилище. Сеанс не инициализируется, когда он является новым, но не изменен."
Ответ 2
В принципе, сеанс сохраняется в хранилище только при его изменении; если вы добавите, удалить или отредактируйте файл cookie сеанса (например: req.session.test = 'some value'
). Если вы хотите, чтобы все сеансы сохранялись в магазине, даже если они не имеют каких-либо изменений, перейдите к saveUninitialized: true
.
Теперь повторное сохранение также происходит только при изменении переменных сеанса/файлов cookie. Если вы хотите сохранить, всегда продолжайте resave: true