كيفية مشاركة الجلسة بين المجالات المتعددة على موقع asp.net واحد؟

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

سؤال

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

لدي أكثر من نطاق:-

1. mydomain.com
2. mydomain.fr
3. mydomain.de
4. mydomain.da
...and many other language based

الآن، لدي موقع ويب واحد منتشر على الخادم. أرغب في مشاركة الجلسة بين المجالات المختلفة على موقع الويب الواحد.كيف يمكنني تحقيق ذلك؟

لقد وجدت على شبكة الإنترنت <httpCookies domain=".mydomain.com" /> ولكنها تعمل مع المجالات الفرعية (مثل test.mydomain.com و secure.mydomain.com) ولكن ليس للمجالات المختلفة.

لقد حاولت أيضًا <httpCookies domain=".mydomain." /> ولكن بحلول هذه الدورة توقفت عن العمل.

هل يمكن لأحد أن يساعدني من فضلك؟

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

المحلول

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

هذا لا يمكن القيام به إلا مع النطاقات الفرعية.

mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...

نصائح أخرى

لا يمكنك مشاركة ملف تعريف الارتباط بين مجال مختلف مباشرة.ولكن هناك طريقة واحدة لجعل ذلك ممكنا في سياق معين.يمكنك تقديم طلب JSONP أو تحميل إطار iframe في JS الخاص بك.إذا كنت تستخدم iframe، فقم بإجراء مكالمة http POST باستخدام النموذج.تحتوي علامة النموذج على اسم مجال آخر كإجراء واسم iframe كهدف.ما سيفعله النموذج هو أنه سيقوم بتحميل iframe وسيظهر ملف تعريف الارتباط الخاص بنطاقك المختلف في متصفحك.

شفرة:

<iframe name="iframe-test" border="1px"></iframe>

<form id="iframe-form" target="iframe-test" action="http://differentdomain.com/setCookie" method="POST">
     <input type="hidden" value="1234" name="token">
   </form>

    <script type="text/javascript">
        function submitForm(){          
            var form = document.getElementById("iframe-form");
            form.submit();              
        }
    </script>

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

لن يؤدي تبديل موفر حالة الجلسة كما يقترح danyolgiax إلى حل مشكلتك لأن تحديد الجلسة لا يزال يحدث مع ملفات تعريف الارتباط.لذلك تحتاج إلى النظر في نهج مثل الجلسات بدون ملفات تعريف الارتباط:

جلسات ملفات تعريف الارتباط

ثم يمكنك اختيار تخزين البيانات في قاعدة بيانات أو جلسة InProc على الخادم.بمجرد إزالة الاعتماد على ملفات تعريف الارتباط.

يحرر

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

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

في web.config:

<sessionState 
        mode="SQLServer"
        sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
        cookieless="false" 
        timeout="20" 
/>

هنا بعض الوثيقة:

http://msdn.microsoft.com/en-us/library/ms178581.aspx

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