الوصول إلى "مفتاح جلسة عمل" اسم الكعكة من أي مكان في القضبان

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

  •  05-07-2019
  •  | 
  •  

سؤال

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

وبشكل افتراضي، يتم تسمية هذه الكعكة <م> _myprojectname_session ، ما نحن بحاجة لمعرفة هو الاسم الفعلي للالكعكة نفسها. حتى إذا لم يكن وضع، يمكننا أن نفعل بعض الموجهات للتأكد من تعيين ملفات تعريف الارتباط.

وكيف يمكننا الوصول إلى اسم لعنة من ملفات تعريف الارتباط من أي مكان؟ أو على الأقل من داخل وحدة تحكم؟

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

المحلول 2

ولقد وجدت الحل. في القضبان 2.3.2 على الأقل مفتاح جلسة في مجموعة في config/initializers/session_store.rb مثل هذا:

ActionController::Base.session = {
  :key         => '_myapp_session',
  :secret      => '[...]'
}

ويمكنك قراءة قيمة مثل هذا:

ActionController::Base.session_options[:key]

ومن Base.session إلى Base.session_options التلقائى، لا معنى كبير، وأنها تسبب لي صداعا كبيرا ... لول

نصائح أخرى

Rails.application.config.session_options[:key]

وللوصول إلى اسم ملف تعريف ارتباط جلسة من داخل طريقة العرض أو وحدة تحكم، يمكنك أن تقول:

request.session_options[:session_key]

وبعد ذلك للوصول إلى القيمة الأولية لتلك الكعكة، ويجري مجموعة فارغة إذا لم يتم تعيين، يمكنك استخدام:

request.cookies[ request.session_options[:session_key] ]

ويتم تعيين اسم الكعكة (ويعرف أيضا باسم session_key) في ملف config/environment.rb الخاص بك.

  config.action_controller.session = {     
    :session_key => '_project_session',
    :secret      => 'long-secret-key'
  }

في تجربتي، إذا كان هناك تسطير في المفتاح، IE أحيانا لا تعيين ملفات تعريف الارتباط. وبعبارة أخرى، استخدم "projectsession 'بدلا من' _project_session".

وأعتقد أنه يتم تخزين مفتاح جلسة في متغير يسمى ENV_SESSION_KEY

ملحوظة أيضا هذا الخطأ الذي يؤثر اختبارات حول session_options في بعض الإصدارات من القضبان الإصدار 2.x: <لأ href = "https://rails.lighthouseapp.com/projects/8994/tickets/2303-testrequest-doesnt-initialize- session_options "يختلط =" نوفولو noreferrer "> https://rails.lighthouseapp.com/projects/8994/tickets/2303-testrequest-doesnt-initialize-session_options

في القضبان 3/4 أنا باستخدام هذا:

request.env["rack.request.cookie_hash"]

وهذا هو تجزئة التي تحتوي على كافة ملفات تعريف الارتباط للمستخدم الحالي بما في ذلك واحد للجلسة. تجزئة لها كمفتاح اسم الكعكة، وكقيمة قيمة الكعكة

وأنا لا أستطيع أن العمل على كيفية القيام بذلك في القضبان 3: - (

وأخيرا انتهى بي الأمر وضع هذا في التكوين / المهيآت / session_store.rb

SESSION_KEY = '_myapp_session'
MyApp::Application.config.session_store :cookie_store, :key => SESSION_KEY

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

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