سؤال

كيف يمكنك الخروج عند استخدام مصادقة Windows في ASP.NET مثل هذه الشبكة.التكوين?

<authentication mode="Windows" />

لقد حاولت التالية دون جدوى.فإنه الموجهات, ولكن لا خروج المستخدم.

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}

معلومات خلفية:

لا بد لي من استخدام مصادقة Windows لأنني بحاجة إلى انتحال الهوية باستخدام "Active Directory" إلى الوصول إلى الملفات المحلية.وأنا لا يمكن أن انتحال استخدام مصادقة النماذج لأن HttpContext.Current.User.Identity لن يكون WindowsIdentity. انتحال استخدام مصادقة النماذج

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

المحلول

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

نصائح أخرى

بالنسبة متصفحات IE فقط ، أو يمكنك استخدام جافا سكريبت التالي للخروج المستخدم في حالة استخدام مصادقة Windows. (ملاحظة: إغلاق المتصفح غير مطلوب، ولكن يوصى به منذ المستخدم قد يكون استخدام غير متصفح إنترنت إكسبلورر).

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

try {
   document.execCommand("ClearAuthenticationCache");
}
catch (e) { }
window.close();

واتخذ هذا الرمز من الصفحة Signout.aspx شير ل.

مصادقة Windows يعمل في IIS مستوى طريق تمرير الخاص بك ويندوز التوثيق المميز.منذ تتم المصادقة في IIS مستوى لا يمكنك في الواقع تسجيل الخروج من تطبيق القانون.ومع ذلك ، يبدو أن هناك إجابة لمشكلتك هنا.هذا هو السؤال الثاني موجهة أساسا ينطوي على استخدام مصادقة النماذج و LogonUser Windows api.

وكان لي طلب شير مع مصادقة Windows، أنا في حاجة خروج تلقائي بعد 15 دقيقة. I اختلطت بعض الرموز وهنا هو النتيجة. يعمل في IE بشكل صحيح.

<script type="text/javascript">
var t;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

function logout() {

    try {
        document.execCommand("ClearAuthenticationCache");
        window.location.href = window.location.protocol.replace(/\:/g, '') + "://" + window.location.host + "/_layouts/customlogin14.aspx";
    }
    catch (e) { }

}

function resetTimer() {
    window.clearTimeout(t);
    t = window.setTimeout(logout, 900000);
} 

وضعت هذه الرموز في الصفحة الرئيسية الخاصة بك، وبعد وقت 15 دقيقة الخمول سترى صفحة تسجيل الدخول. نأمل أن تكون هذه المساعدة شخص ما

ولدي هذا العمل باستخدام جافا سكريبت في كل من IE و Firefox، على الرغم من أنه يسجل لكم من كل شيء كنت مسجلا للدخول في IE. انها نوع من يعمل في رحلات السفاري، ولكن سفاري تبرزها تحذير التصيد. لا يعمل في الأوبرا.

    try { 
        if (document.all) 
        { 
            document.execCommand("ClearAuthenticationCache"); 
            window.location = "/"; 
        } 
        else 
        { 
            window.location = "http://logout:logout@example.com"; 
        } 
    } 
    catch(e) 
    { 
        alert("It was not possible to clear your credentials from browser cache. Please, close your browser window to ensure that you are completely logout of system."); 
        self.close(); 
    } 

أفضل الإجابات رأيت في ذات ستاكوفيرفلوو الأسئلة:

هل هناك متصفح يعادل IE ClearAuthenticationCache?

و

تسجيل المستخدم عند استخدام المصادقة الأساسية HTTP

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

وكان الكثير من المتاعب مع هذا، وفيما يلي التعليمات البرمجية التي تعمل، ونأمل أن يجد شخص ما أنه من المفيد.

foreach (var cookie in Request.Cookies.Keys)
{
    Response.Cookies.Delete(cookie);
}


await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);


Response.Cookies.Append("EdgeAccessCookie", "", new Microsoft.AspNetCore.Http.CookieOptions()
{
    Path = "/",
    HttpOnly = true,
    SameSite = SameSiteMode.Lax, Expires = DateTime.Now.AddDays(-1)
});


Response.Redirect("https://adfs.[sitename].com/adfs/ls?wa=wsignout1.0");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top