使用asp.net和iis在geoserver中进行身份验证

Nat*_*izz 4 javascript asp.net geoserver openlayers

我不知道这是否是一个愚蠢的问题,但我如何将asp.net身份验证与openlayers"结合"?

我创建了一个登录页面,在openlayers中进行身份验证(在c#,服务器端),这是我的代码

Uri uri = new Uri("http://"+username+":"+password+"@localhost:1979/geoserver/wms");
        if (uri.Scheme == Uri.UriSchemeHttp)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
            request.Method = WebRequestMethods.Http.Post;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream()); string tmp = reader.ReadToEnd();
            response.Close();
            Response.Write(tmp);
        }
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是解决问题的正确方法,无论如何,如果我达到目标(在地理服务器中使用用户名和密码进行身份验证),我该如何将此身份验证与openlayers结合使用,这是在用户端(javascript)

提前致谢

Max*_*aez 5

要从javascript端使用geoserever进行身份验证,您必须向geoserver autentication servlet(j_spring_security_check)发帖.尝试使用此登录功能:

     function login (options) {
    // url del servlet del geoserver
    var url = options.server + "/geoserver/j_spring_security_check";
    // parametros para el login
    params = "username=" + options["user"] + "&password="
                + options["password"];

    var contentType = "application/x-www-form-urlencoded";
    //se inicializa la petición ajax
    var ajax = $.ajax({
        data : params,
        type : "POST",
        contentType : contentType,
        url : url
    });
    // se ejecuta cuando la peticion finaliza
    ajax.done(function() {

        if ($.cookie("JSESSIONID") != null && options && options.success) {
            options.success();
        }
    });
    // si ocurrio un error al realizar la peticion
    ajax.fail(function(data) {
        if (options && options.failure) {
            options.failure(data);
        }
    });
    // se ejecuta siempre al final de la petición, sin importar que esta
    // haya fallado
    ajax.always(function() {
        if (options && options.always) {
            options.always();
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

并用这种方式

 login({
    user:"admin" //geoserver user
    password: "adminPassword", 
    server : "http://192.168.10.1:8080", //geoserver host
    success : function(){
        alert("Login OK!");
    },
    failure : function(){
        alert("Login fail!");
    }
});
Run Code Online (Sandbox Code Playgroud)