Жизненный цикл корзины с файлами cookie

#asp.net-mvc #cookies #shopping-cart

#asp.net-mvc #файлы cookie #корзина покупок

Вопрос:

У меня есть реализация корзины, которая использует Session, и я хочу перейти на версию, основанную на файлах cookie. Более того, на самом деле я сохраняю полную корзину в сеансе и хочу перейти на версию, в которой в cookie содержится только идентификатор cartID, а содержимое находится в базе данных.

Я прочитал много сообщений в блоге и даже вопросов по SO, но все еще испытываю некоторую путаницу в некоторых областях:

  • как происходит цикл обновления файлов cookie? На самом деле я создаю новую корзину, когда начинается новый сеанс. Затем я управляю сеансом на основе действий клиента (добавить в корзину, удалить из корзины, очистить при оформлении заказа)
  • как я могу создать уникальный cookieId
  • какой наилучший способ справиться с задачей резервного копирования в базу данных? Используя jQuery или лучше обрабатывать все на стороне сервера?

Например, я использую asp net mvc с c #.

Ответ №1:

Я использовал Session для сохранения всей корзины покупок. Позже я сохранил только идентификатор корзины покупок в cookie и фактические товары в базе данных.

В моем сценарии сначала я временно сохраняю товары в корзине покупок. После успешного оформления заказа я перемещаю товары из корзины покупок в таблицы Order и OrderItem и удаляю корзину.

Вот что вы можете извлечь из моей ошибки.

каков жизненный цикл файлов cookie? На самом деле, я создаю новую корзину, когда начинается новый сеанс. Затем я управляю сеансом на основе действий клиента (добавить в корзину, удалить из корзины, очистить при оформлении заказа)

Не создавайте cookie при начале нового сеанса. Вместо этого вы хотите создать запись в базе данных только после того, как клиент добавит товар в корзину. Затем сохраните этот GUID в cookie.

Основная причина в том, что если вы создадите файл cookie слишком рано, в итоге у вас будет слишком много заброшенных корзин.

К вашему СВЕДЕНИЮ: вы хотите запланировать задачу по очистке заброшенных корзин через определенный промежуток времени.

как я могу создать уникальный cookieId

Сделайте идентификатор столбца базы данных уникальным идентификатором. После создания новой корзины покупок сохраните возвращенный идентификатор GUID в cookie.

какой наилучший способ справиться с задачей резервного копирования в базу данных? Используя jQuery или лучше обрабатывать все на стороне сервера?

Вы хотите сгенерировать GUID на стороне сервера, как указано выше.

Не используйте целое число с приращением идентификатора. Это приведет к большой дыре в безопасности, потому что вы можете легко предсказать количество.

Комментарии:

1. Спасибо, что поделились своим опытом. Как вы обрабатываете анонимные корзины? Это корзины для пользователей, которые еще не вошли в систему?

2. Я создаю столбец userId (разрешить значение null) рядом со столбцом первичного ключа GUID . Если анонимный пользователь добавляет товар в корзину, я оставляю идентификатор пользователя пустым. После входа в систему я возвращаюсь и заполняю userId идентификатором пользователя.