سؤال

وأريد أن يكون وظيفة على طلبي الذي يتيح التحقق من المستخدم الخروج التي يرغبون في البقاء متصلا إلى أجل غير مسمى (وضع تعسفي انتهاء الكعكة في 3 أشهر من الآن).

ورمز لدي للتعامل مع هذا هو

private static HttpCookie GetFormsAuthenticationCookie(string userNameResponse, 
                                                        bool persistCookie)
{            
    var cookie = FormsAuthentication.GetAuthCookie(userNameResponse, persistCookie);

    if (persistCookie)
        cookie.Expires = DateTime.Now.AddMonths(3);

    return cookie;
}

private void LoginUser(string userNameResponse, bool PersistCookie)
{
    Response.Cookies.Add(GetFormsAuthenticationCookie(userNameResponse, PersistCookie));

    string navigateAfterUrl = FormsAuthentication.GetRedirectUrl(userNameResponse,
                                                                 PersistCookie);

    Response.Redirect(navigateAfterUrl);
}

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

ولدي آلة إعداد رئيسي محدد في بلدي الملف web.config ذلك لا ينبغي أن يحصل على إعادة نفس العمل الكعكة إذا IIS وما إلى ذلك؟ هل لديها أي اقتراحات بشأن ما يمكن أن تكون إما يسبب هذا أو أتلست على كيفية تتبع هذا اكبر منذ لا أستطيع التفكير في أي شيء آخر للقيام به.

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

المحلول

عند استدعاء GetAuthCookie الأسلوب <أ href = ل "http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx" يختلط = "نوفولو noreferrer"> FormsAuthenticationTicket يتم إنشاؤه مع مهلة التي قدمها في مهلة العقارات في الملف web.config. لذلك تأكد من تعيينها بشكل صحيح:

<authentication mode="Forms">
  <forms
    loginUrl="/someloginUrl"
    requireSSL="true"
    protection="All"
    // This is the setting you are looking for! (it's in seconds)
    timeout="120"
    domain="example.com"
    slidingExpiration="false"
    name="cookieName" />
</authentication>

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

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