asp.net mvc 'अन्य उपयोगकर्ता के रूप में लॉगिन' MVC 4 Windows प्रमाणीकरण




asp.net-mvc http (2)

लोगों ने रिवर्स इंजीनियर \ डीकंपंपाइल को कुछ शेयरपॉइंट से प्राप्त किया जो इस सुविधा के साथ होता है।

मैंने इसे ASP.NET MVC 5 एप में परीक्षण किया और यह अपेक्षा के अनुरूप काम कर रहा है।

यह कोड माइक्रोसॉफ्ट को डिकंपलिंग करने पर आधारित है। टीएएमफाउंडेशन। वेब एवेस जिस पर "एक अलग यूजर के रूप में साइन इन करें" फ़ंक्शन है।

public ActionResult LogOut()
{
    HttpCookie cookie = Request.Cookies["TSWA-Last-User"];

    if(User.Identity.IsAuthenticated == false || cookie == null || StringComparer.OrdinalIgnoreCase.Equals(User.Identity.Name, cookie.Value))
    {
        string name = string.Empty;

        if(Request.IsAuthenticated)
        {
            name = User.Identity.Name;
        }

        cookie = new HttpCookie("TSWA-Last-User", name);
        Response.Cookies.Set(cookie);

        Response.AppendHeader("Connection", "close");
        Response.StatusCode = 401; // Unauthorized;
        Response.Clear();
        //should probably do a redirect here to the unauthorized/failed login page
        //if you know how to do this, please tap it on the comments below
        Response.Write("Unauthorized. Reload the page to try again...");
        Response.End();

        return RedirectToAction("Index");
    }

    cookie = new HttpCookie("TSWA-Last-User", string.Empty)
    {
        Expires = DateTime.Now.AddYears(-5)
    };

    Response.Cookies.Set(cookie);

    return RedirectToAction("Index");

}

स्रोत:

Asp.net में विंडोज प्रमाणीकरण का उपयोग करते हुए एक अलग उपयोगकर्ता के रूप में बल को साइन करें

मेरे पास एक इंट्रानेट प्रोजेक्ट है जो एमवीसी 4 में लिखा गया है जो उपयोगकर्ताओं को प्राधिकृत और प्रमाणित करने के लिए विंडोज प्रमाणीकरण का उपयोग करता है।

मुझे एक 'अन्य उपयोगकर्ता के रूप में लॉगिन' कार्यक्षमता जोड़ने की आवश्यकता है

कुछ खोज के बाद मुझे यह समाधान मिला जिसने एक 401 लौटने का सुझाव दिया, और निम्न क्रिया (जिसे एक फ़ॉर्म का उपयोग कर कहा जाता है) बनाया है:

    // 
    // POST: /Home/LogOut

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOut()
    {
        return new HttpUnauthorizedResult();
    }

कार्रवाई को बुलाया जाता है, और ब्राउज़र उपयोगकर्ता नाम और पासवर्ड विंडो को पॉप करता है, हालांकि परिणाम को एक्शन में वापस रीडायरेक्ट करता है, एक 401 हमेशा वापस होता है

मैं उपयोगकर्ता को पिछली कार्रवाई में वापस कैसे पुनर्प्रेषित कर सकता हूं, एक बार नए क्रेडेंशियल्स में लॉग इन करने के बाद?

क्या सिर्फ एक 401 लौटने की बजाय सर्वर साइड पर क्रेडेंशियल्स को रद्द करने का कोई तरीका है?


यह विधि हमेशा उपयोगकर्ता को लॉग आउट करेगी और होम पेज पर रीडायरेक्ट करेगी। मैंने [AllowAnonymous] को यह भी सुनिश्चित करने के लिए कहा है कि सभी इस पद्धति का उपयोग कर सकते हैं।

    [AllowAnonymous]
    public ActionResult LogOut()
    {
        HttpCookie cookie = Request.Cookies["TSWA-Last-User"];

        cookie = new HttpCookie("TSWA-Last-User", string.Empty)
        {
            Expires = DateTime.Now.AddYears(-5)
        };
        Response.Cookies.Set(cookie);

        Response.AppendHeader("Connection", "close");
        Response.StatusCode = 401; // Unauthorized;
        Response.Clear();

        // redirect to home
        Response.Write("<script type='text/javascript'>");
        Response.Write("var getUrl = window.location; var baseUrl = getUrl.protocol + " + 
           "'//' + getUrl.host + '/' + getUrl.pathname.split('/')[1]; window.location.href = baseUrl; ");
        Response.Write("</script>");
        Response.End();           

        return RedirectToAction("Index");

    }






http-status-code-401