А потом возникает необходимость для гостей хранить на фронте, а для пользователя в БД и синхронизировать при авторизации
И там это есть! Если не залогинен, то берем в сессию. Если логинится - мержим с тем, что есть в БД, а сессию чистим. Если залогинен, то работаем с корзиной в БД