كيف:النشر وإعادة التوجيه عبر المواقع في نماذج الويب ASP.NET

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

سؤال

سيناريو:

المهمة التي بين يدي هي تمكين حل تسجيل الدخول الموحد بين المؤسسات/مواقع الويب المختلفة.أبدأ كمستخدم مصادق عليه على موقع ويب إحدى المؤسسات، وأحول معلومات محددة إلى مستند Xml، وأقوم بتشفير المستند باستخدام Triple des، وأرسل ذلك كمتغير نشر إلى صفحة تسجيل الدخول للمؤسسة الثانية.

سؤال:

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

يجب أن يتصرف هذا تمامًا مثل وجود نموذج مثل:

الإجراء = "http://www.www.com/posthere" طريقة = "post"

...والحصول على حقل نص مخفي مثل:

نوع الإدخال = "مخفي" القيمة = "ملف XML المشفر الخاص بي"

تتم كتابة هذا في نماذج الويب asp.net 2.0.

--

يحرر: يسأل نيك لماذا لا يعمل نموذج html الذي أصفه أعلاه.إجابة:ليس لدي أي سيطرة على أي من الموقعين؛أنا أقوم ببناء "الرجل الوسيط" الذي يجعل كل هذا يحدث.يقوم الموقع 1 بإعادة توجيه المستخدم إلى الصفحة التي أقوم بإنشائها، ولا بد لي من إنشاء ملف XML، ثم إعادة توجيهه إلى الموقع 2.الموقع 1 لا يريد أن يعرف المستخدم عن موقعي، ويجب أن تكون عملية إعادة التوجيه شفافة.

العملية التي وصفتها أعلاه هي ما يفوضه الطرفان (الموقع أ والموقع ب).

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

المحلول

قم بإرسال مستند يحتوي على المدخلات المخفية وقم بتضمين معالج التحميل الذي ينشر النموذج على الفور إلى الموقع الآخر.يؤدي استخدام document.ready() الخاص بـ jquery إلى حل مشكلة ما إذا كان DOM قد تم تحميله قبل حدوث النشر، على الرغم من وجود طرق أخرى للقيام بذلك دون استخدام jquery.قد ترغب في تضمين بعض الرسائل الصغيرة على الشاشة تفيد بأنه سيتم إعادة توجيه المستخدم قريبًا وتوفير رابط يقوم أيضًا بالنشر

...headers left out...

<script type='text/javascript'>

$(document).ready( function() {
   $('form:first').submit();
 });
</script>

<body>
   <form action='othersiteurl' method='POST'>
       <input type='hidden' value='your-encrypted-xml" />
   </form>
</body>

نصائح أخرى

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

أنت تقوم بالفعل بنشر منشور على خادم آخر، لذا لا تحتاج حقًا إلى القيام بأي شيء.النموذج الذي لديك مثالي بالفعل، وعندما يعترض الخادم الآخر الطلب، يكون ذلك عندما يتخذ قرارًا إما بالسماح للمستخدم بالدخول والاستمرار في الموقع، أو إعادة توجيهه مرة أخرى إلى مُحيله (هكذا) في الرأس.عند إعادة التوجيه مرة أخرى إلى المُحيل، قد يرغبون في معالجة رسالة توضح الخطأ، مثل ?error=no_auth

لقد كتبت عن هذا لسؤال آخر منذ فترة.أتمنى أن يساعدك هذا:

كيف يمكنك تمرير جلسة مصادق عليها بين مجالات التطبيق

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