سؤال

كيف يمكنك حل مشكلة حلقة تسجيل الدخول اللانهائية عند استخدام جلسات Cookieless ولا يمكن تغيير اسم Login.aspx إلى HTTPhandler؟

أي عندما يضرب المستخدم مع حقوق المسؤول عن زر تسجيل الخروج ويتم تمرير عنوان URL للعودة إلى صفحة محظورة إلى Login.aspx ثم محاولة مستخدم آخر دون حقوق المسؤول لتسجيل الدخول، يتم إعادة توجيهها إلى صفحة تسجيل الدخول.

لقد صادفت هذا المحلول لكنني لا أستطيع تغيير اسم تسجيل الدخول .ASPX لمعالج HTTP، ويبدو أن الوظيفة Isauthenticated لا تعمل في صفحة ASPX باستخدام Authieless Auth لأنه يبدو أن تذكرة مصادقة النماذج يتم تجريدها من عنوان URL عند إعادة توجيهها إلى تسجيل الدخول صفحة.

تعديل:

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

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

المحلول

تحقق مما إذا كان المستخدم مخولا للوصول إلى الصفحة في Eroblyurl، بعد تسجيل الدخول في صفحة Login.aspx. قد تستخدم هذه الطريقة من urlauthorizationModule (أو واحدة مخصصة إذا كنت تعمل بشكل أفضل لك):

System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal(

     returnUrl,
     userPrincipal, 
     GET");

إذا لم يكن المستخدم غير مصرح به، فما عليك سوى إعادة توجيه إلى صفحة يمكن للمستخدم الوصول إليها.

للحصول على مدير المستخدم:

var roles = System.Web.Security.Roles.GetRolesForUser(username);

var principal = new System.Security.Principal.GenericPrincipal(

   new System.Security.Principal.GenericIdentity(username), 

   roles

);

نصائح أخرى

كان لدينا مشكلة مماثلة، وأصيبت به القيام بما يلي:

If "LogOut".Equals(e.CommandName) Then
    FormsAuthentication.SignOut()
    Response.Redirect("~/Login.aspx")
End If

ثم في Login.aspx، نقوم بتغيير PostBackurl إلى Login.aspx إذا كان يحتوي على معلمة ReturnLL التي ترسل المستخدم مرة أخرى إلى Login.aspx.

بعض الخيارات ...

واحد، إعادة توجيه يدويا مرة أخرى إلى login.aspx عندما يتم تسجيل المستخدم، لذلك لا يوجد عائد. احصل على تحديث meta على صفحاتك التي تتطابق مع مهلة الجلسة حتى لا ينقر المستخدم على الموارد التي لا يمكنهم الوصول إليها فجأة.

اثنان، قم دائما بتسجيل شخص ما في صفحة_ تحميل Login.aspx. مهلا، لماذا لا؟ يمكنني التفكير في بعض الأسباب، ولكن ربما لا ينطبقون على وضعك.

ثلاثة، تجاهل العائدين. ليس عليك الاتصال RedirectFromLoginPage! إعادة توجيه المستخدم إلى صفحة الهبوط الافتراضية عند تسجيل الدخول.

هل يمكنك تغيير تدفق الصفحة؟

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

تشرح هذه الصفحة أسباب إعادة توجيه، ويعطيها خيارات مثل:

1. Click here to login as another user.
2. Click here to request access to the page.
3. Click here to login again, if your session has expired.

هذا من شأنه أن يزيل المرجع الدائري، وبالتالي المشكلة.

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

على الرغم من أنك تقول أنك لا تستطيع تغيير اسم Login.aspx إلى معالج HTTP، فقد حاولت إضافة إعادة توجيه HTTP 301 بحيث يطلب من الخادم إعادة توجيه المستخدم إلى معالج HTTP، على سبيل المثال login.ashx؟

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