ما هي أفضل طريقة بالنسبة لي لتنفيذ تأمين السجل؟

StackOverflow https://stackoverflow.com/questions/165800

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي سؤال حول تأمين. هذا لا يجب أن يكون فقط حول تأمين السجل، ولكن على أي حال.

ودعونا نقول أنا أكتب على شبكة الإنترنت للوصول CMS. أنا تكافح مع بعض الأفكار.

ويمكن أن أقوله، في لحظة عندما يفتح المستخدم مقال للتحرير، وعلم المادة على أنها "قيد الاستعمال. حتى الآن جيد جدا.

ولكن عندما أقوم بإزالة العلم؟ عندما يقوم المستخدم يحفظ المقالة؟ ولكن ما إذا كان المستخدم لا يشعر مثل الكتابة بعد الآن، وتقرر إغلاق المتصفح له وتذهب إلى الفراش؟

وآلية المهلة يتبادر إلى الذهن، ولكن كم من الوقت يستغرق لكتابة مقال؟ 10 دقائق قصيرة جدا، 30 دقائق طويلة جدا ..

وربما أنا الإفراط في تعقيد هذا. أود أن أسمع أفكارك حول هذا الموضوع.

هل كانت مفيدة؟

المحلول

لماذا لا تستخدم الطوابع الزمنية؟ لا تقلق فعلا عن تأمين أي شيء، مجرد رد فعل لهذا الحدث حيث تغيرت تسجيلة رقم (المقالة).

والأساس، وقبل أن تقوم بحفظ هذه المادة، ومعرفة ما اذا كان الإصدار الخاص بك (الطابع الزمني) هو نفس ما هو موجود على القرص. إذا نفسه، ثم لا يزال لديك أحدث نسخة حتى كتابة ذلك، إذا لم يكن ثم ... عرض للدمج، وتقديم لإنقاذ جديدة كما، تخلص منه - تطبيقه تحديدا

نصائح أخرى

وتصويتي هو متفائل تأمين كلما كان ذلك ممكنا.

في مكان واحد، حيث كنت قد نفذت أقفال الفعلية، وكان لي صفحة المشرف لإزالة الأقفال. وكان هناك أيضا خدمة تعمل على الخادم لفتح أي الأقفال التي لم يكن لديك جلسة عمل نشطة المقابلة ..

استخدم rowversion لMSSQL 2005 وحتى، والطابع الزمني لMSSQL 2000 وأدناه. استخدام الحقل xmin الخفية لشبكة الإنترنت.

ودعونا جميع المستخدمين الآخرين فتح السجل. جنبا إلى جنب مع حفظ السجل، والعلامة الذي حفظه، وبمساعدة rowversion، على الصيد (DbConcurrencyException) إعادة رمي خطأ التي تشير إلى المستخدمين الآخرين الذين حفظ السجل قبل أن تفعل، وطلب منهم إعادة فتح السجل لمشاهدة التغييرات التي أجراها المستخدم الذي حفظ السجل أولا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top