ruby on rails - معنى - تنفيذ "تذكرني" في تطبيق Rails




ruby معنى (6)

أود أن أقترح عليك إما إلقاء نظرة على المكون الإضافي RESTful_Authentication ، والذي يحتوي على تطبيق لهذا ، أو مجرد تبديل التطبيق الخاص بك لاستخدام RESTful Authentication_plugin. يوجد شرح جيد حول كيفية استخدام هذا المكون الإضافي في Railscasts:

railscasts # 67 restful_authentication

هنا رابط إلى البرنامج المساعد نفسه

restful_authentication

يحتوي تطبيق Rails الخاص بي على مربع تسجيل الدخول مع مربع الاختيار "تذكرني". يجب أن يظل المستخدمون الذين حددوا هذا المربع مسجّل الدخول حتى بعد إغلاق المستعرض. أتابع ما إذا كان المستخدمون قد قاموا بتسجيل الدخول عن طريق تخزين هويتهم في جلسة المستخدم.

ولكن يتم تنفيذ الجلسات في Rails كملفات تعريف ارتباط للجلسة ، والتي ليست دائمة. يمكنني جعلها ثابتة:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

ولكن يبدو أن هذا الاختراق ، وهو أمر يثير الدهشة لهذه الوظيفة المشتركة. هل هناك أي طريقة أفضل؟

تصحيح

إجابة غاريث جيدة ، لكنني ما زلت أرغب في الحصول على إجابة من شخص مطلع على Rails 2 (نظرًا لأنها CookieSessionStore فريدة من نوعها).


سأذهب إلى Devise لحل المصادقة الرائعة للقضبان.


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


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

هنا ما قمت به:

  • تم تعيين ملف تعريف ارتباط الجلسة على عمر طويل (6 أشهر أو نحو ذلك)
  • داخل متجر الجلسة
    • تاريخ "انتهاء الصلاحية" الذي تم تعيينه لتسجيل الدخول + 24 ساعة
    • هوية المستخدم
    • تمت المصادقة = صحيح حتى أتمكن من السماح بمراجعات المستخدم المجهولة (ليست خطيرة بسبب حماية العبث بملفات تعريف الارتباط)
  • أقوم بإضافة عامل تصفية pre_filter في "وحدة التحكم في التطبيق" التي تتحقق من جزء "تنتهي صلاحيته" من الجلسة.

عندما يتحقق المستخدم من مربع "تذكرني" ، أقوم فقط بتعيين تاريخ الجلسة [: expireson] ليكون تسجيل الدخول + أسبوعان. لا يمكن لأحد سرقة ملف تعريف الارتباط والبقاء في تسجيل الدخول إلى الأبد أو التنكر كمستخدم آخر لأن ملف تعريف ارتباط جلسة القضبان هو دليل على العبث.







http