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)
提前致谢
要从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)