سؤال

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

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

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

ولكن يبدو أن مثل هاك, وهو من المستغرب أن مثل هذه الشائعة وظائف.هل هناك أي طريقة أفضل ؟

تحرير

غاريث الجواب هو جيد جدا, ولكن أنا لا تزال ترغب في إجابة من شخص على دراية القضبان 2 (بسبب انها فريدة من نوعها CookieSessionStore).

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

المحلول

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

هنا هو ما فعلته:

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

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

نصائح أخرى

يجب عليك بالتأكيد لا يمكن تمديد الدورة كوكي أن عاش فترة طويلة.

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

في ملخص على الرغم من أنك يجب أن:

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

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

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

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

railscasts #67 restful_authentication

هنا هو ارتباط إلى البرنامج المساعد في حد ذاته

restful_authentication

على restful_authentication البرنامج المساعد لديه حسن تنفيذ من هذا:

http://agilewebdevelopment.com/plugins/restful_authentication

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

هذا هو جيد جدا كتابة أحد رجال تجربة إنشاء 30-اليوم استمرار جلسات.

تحذير:بلوق وظيفة من 2006

http://grahamglass.blogs.com/main/2006/05/rails_sessionsr.html

هذا يعمل مثل السحر بالنسبة لي:

http://squarewheel.wordpress.com/2007/11/03/session-cookie-expiration-time-in-rails/

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

Bascially, انها بسيطة مثل:

  1. بما في ذلك ملف واحد في بائع/دليل الإضافات
  2. مجموعة انتهاء الدورة القيمة في تطبيق وحدة تحكم باستخدام سطر واحد فقط

وأود أن تذهب من أجل وضع الرائعة المصادقة الحل القضبان.

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