كيف يمكن للمرء أن ينفذ هذا النوع من التسجيل التدريجي / التسجيل الكسول في القضبان؟

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

سؤال

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

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

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

المحلول

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

مرة واحدة يسجل المستخدم، يمكنك ربط بهم Profile مع جديد User سجل وإزالة ملف تعريف الارتباط ومعرف السلسلة الفريد. يمكنك الآن استعادة ملفات التعريف الخاصة بهم الآن عند تسجيل الدخول، بناء على User سجل.

ال Profile يمكن أن يحتوي النموذج على أي معلومات ترغب في تخزينها.

إذا كنت ترغب في التمييز بين المستخدمين المسجلين والمستخدمين المجهولين، فيمكنك إنشاء AnonymousProfile نموذج و A. Profile نموذج (لكل سمات مختلفة)، وببساطة نسخ جميع البيانات من ملف التعريف المجهول إلى ملف تعريف المستخدم عند تسجيل شخص ما.

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

class ApplicationController < ActionController::Base
  before_filter :fetch_user_data

  def fetch_user_data
    @current_user = ... # Work your magic to get current user
  end

  private

  def current_profile
    @current_user and @current_user.profile  # Use profile association
  end
end

في مكان ما في إجراء تحكم:

if current_profile
  # Do stuff with current_profile
  # Only available to registered users...
end

يمكنك في وقت لاحق تغيير تنفيذ current_profile إذا غيرت رأيك وتريد وجود ملفات تعريف مجهولة أن يكون لها تأثير لمستخدميك المجهولين.

نصائح أخرى

الطريقة الوحيدة لتحديد المستخدمين هي استخدام ملفات تعريف الارتباط. ما هو الموقع الذي كنت تستخدمه هو القيام به هو:

لأول مرة إنشاء إدخال إدخال في جدول "المستخدمين" وإضافتهم إلى مجموعة "الضيوف". قم بحفظ ملف تعريف ارتباط معرف لآلة المستخدمين حتى تتمكن من البحث عنها مرة أخرى لاحقا.

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

الطريقة التي تدير بها مجموعاتك يمكن أن تكون بسيطة مثل العلم في قاعدة البيانات.

لأن هذه هي سؤال القضبان ...

من المحتمل أن تتعامل مع معظم هذا في point_filter في application_controller.rb. ستكون الخطوات مثل:

if has_cookie
   @user = lookup_user
else
   @user = create_new_guest_user
end

يمكنك بسهولة توسيع واحدة من أطر المصادقة الموجودة مثل Acts_as_Authent المعتقل أو التخليص للقيام بذلك.

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