chrome 401未经授权的javascript登录

时间:2013-07-16 19:00:27

标签: javascript authentication google-chrome-extension

我目前正在开发Chrome扩展程序,我需要访问一些受http-auth保护的资源(webdav)。 HTTP身份验证使用(在最好的情况下)摘要身份验证。

问题是:如果登录名/密码错误,我不能获得401状态(未经授权),Chrome会弹出常规验证对话框。这是我不想要的,因为它让用户感到困惑,我无法从这里保存凭据。

编辑:我面临的另一个用例是:我想检查一个资源是否受密码保护而不试图提供凭据来实际访问它。

如何在不弹出Chrome的授权框的情况下抓住401的想法?

我尝试使用此功能:

function autoLogin(domain, user, password) {
        var httpAuth;

        if (window.XMLHttpRequest) {
            httpAuth = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
        }
        else if (window.ActiveXObject) {
            httpAuth = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
        }
        else {
            alert("Seu browser não suporta autenticação xml. Favor autenticar no popup!");
        }

        var userName = domain + "\\" + user;

        httpAuth.open("GET", "/_layouts/settings.aspx", false, userName, password);
        httpAuth.onreadystatechange = function () {
            if (httpAuth.status == 401) {
                alert("wrong");
                eraseCookie('AutoLoginCookieUserControl_User');
                eraseCookie('AutoLoginCookieUserControl_Password');
            }
            else {
                if ($(".pnlLogin").is(':visible')) {
                    $(".pnlLogin").hide();
                    $(".pnlUsuario").css("display", "block");
                    $(".avatar").css("display", "block");
                    var name = $().SPServices.SPGetCurrentUser({ fieldName: "Title" });
                    $(".loginNomeUsuario").html("Seja Bem Vindo(a) <br />" + name);
                }
            }
        }

        try {
            httpAuth.send();
        }
        catch (err) {
            console.log(err);
        }
    }

0 个答案:

没有答案