في ASP.NET؛كيف يمكنني تسجيل الدخول من صفحة HTML بعيدة إلى صفحة ASPX أخرى بعضوية ASP.NET
سؤال
أحتاج أساسًا إلى تسجيل الدخول إلى مجال آخر يستخدم عضوية asp.net.
إذا كان لدينا تطبيق ويب ASP.NET باستخدام عضوية ASP.NET من ناحية ، وصفحة HTML من مجال آخر من ناحية أخرى.
هل من الممكن تسجيل الدخول إلى موقع ASP.NET عبر صفحة HTML عن بعد.
لقد قمت بذلك مع Coldfusion من قبل ولكن عضوية ASP.NET تستخدم عنصر تحكم الخادم.
هتافات!
المحلول
أسفل التحكم في خادم تسجيل الدخول، يستخدم ASP.NET تطبيق MembershipProvider ومصادقة النماذج لمستخدم لديه عضوية ASP.NET.يمكنك تكرار هذه الخطوات دون استخدام التحكم في خادم تسجيل الدخول، وذلك عن طريق التحقق من صحة بيانات الاعتماد يدويًا ثم إرفاق FormsAuthentication
ملف تعريف الارتباط إلى Response
.
فيما يلي بعض الموارد التي يجب أن تساعدك على البدء:
- فهم تذكرة مصادقة النماذج وملفات تعريف الارتباط - MSDN
- شرح:مصادقة النماذج في ASP.NET 2.0 - MSDN
- فحص عضوية ASP.NET وأدواره وملفه الشخصي - 4 رجال من رولا
من المحتمل أيضًا أن تستفيد من التفكير في مصدر Login
التحكم، حتى تتمكن من فهم التسلسل الدقيق للأحداث التي تحدث عندما يقوم المستخدم بتسجيل الدخول باستخدام عنصر تحكم الخادم.وهذا من شأنه أن يسهل عليك فهم كيفية تكرار هذه الوظيفة لحالة الاستخدام الخاصة بك.
كملاحظة جانبية، أوصي باستخدام custom IHttpHandler
التنفيذ كنقطة حقن لمعالجة طلب تسجيل الدخول، ولكن هناك العديد من الطرق التي يمكنك من خلالها إنجاز هذه المهمة.
تحديث، أشعر بالسخاء، لذلك
فيما يلي مثال للمعالج الذي يمكنك استخدامه لتسجيل دخول مستخدم باستخدام عضوية ASP.NET وFormsAuthentication (تمامًا مثل عنصر تحكم الخادم).
يفترض هذا الرمز:
- يوجد تعيين تم تكوينه باستخدام التوجيه أو web.config الذي سيستدعي هذا المعالج.
تحتوي الصفحة الطالبة على نموذج يشير إلى عنوان URL/المسار الذي تم تعيينه في web.config أو مع التوجيه، وأن النموذج الموجود في تلك الصفحة يحتوي على
username
حقل الإدخال مع الاسمusername
و أpassword
حقل الإدخال مع الاسمpassword
.public class LoginHandler : IHttpHandler { void IHttpHandler.ProcessRequest(HttpContext context) { string username = context.Request["username"]; string password = context.Request["password"]; if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password) && Membership.Provider.ValidateUser(username, password)) { FormsAuthentication.SetAuthCookie(username, true); RenderUserLoggedInResponse(context.Response,username); } else FormsAuthentication.RedirectToLoginPage("loginfailure=1"); } private static void RenderUserLoggedInResponse(HttpResponse response, string username) { response.Write(string.Format("You have logged in successfully, {0}!", username)); response.End(); } bool IHttpHandler.IsReusable { get { return true; } } }