Hi again!!
I've did it! =)
Let me say that I'm using an older version of geoserver: 2.0-RC1. I know
that with newer versions this can be simpler, but I cannot update geoserver
in this environment.
Here are other info about my environment:
Apache Tomcat 6.0.18
Apache 2.0.63
PHP 5.2.11
For some reason, I forgot to compile this PHP with CURL, so I needed
another alternative.
Here is the functions created and working for me:
//Login Geoserver
function loginGeoserver($username, $password) {
$geoserverURL = "http://<DOMAIN>/geoserver/j_acegi_security_check";
$post = http_build_query(array(
"username" => $username,
"password" => $password,
));
$context = stream_context_create(array("http"=>array(
"method" => "POST",
"header" => "Content-Type: application/x-www-form-urlencoded\r\n" .
"Content-Length: ". strlen($post) . "\r\n",
"content" => $post,
)));
$page = file_get_contents($geoserverURL, false, $context);
for($i = 0; $i < sizeof($http_response_header); $i++){
$headerLine = $http_response_header[$i];
$pos = strpos($headerLine, 'Set-Cookie');
if ($pos === 0) {
$str = explode("=",$headerLine);
$value = explode(";",$str[1]);
$cookieValue = $value[0];
break;
}
}
$cookieName = "JSESSIONID";
$cookieDomain = "<DOMAIN>";
$cookiePath = "/geoserver";
$cookieExpiration = 0;
setcookie($cookieName,$cookieValue,$cookieExpiration,$cookiePath);
return $cookieValue;
}
For some reason that I couldn't find out, the cookie set in this function
is not listed in php $_COOKIE var...
So, I had to return $cookieValue and keep it with my sessions vars.
Inside the logout function, I use this value to post to j_acegi_logout:
function logoutGeoserver() {
//Logout do Geoserver
$geoserverURL = "http://<DOMAIN>/geoserver/j_acegi_logout";
$context = stream_context_create(array("http"=>array(
"method" => "POST",
"header" => "Content-Type: application/x-www-form-urlencoded\r\n" .
"Content-Length: ". strlen($post) . "\r\n".
"Cookie: JSESSIONID=".$_SESSION['geoserverCookie']."\r\n",
)));
$logout = file_get_contents($geoserverURL, false, $context);
}
Just remember to change the <DOMAIN> if you need to use this..
Well, That's it... Maybe it can be usefull for someone!
Any suggestions are welcome!
Best Regards,
Rodrigo C. Antonialli
======================================
Rio Claro - SP - Brasil
LinkedIn: http://www.linkedin.com/in/rcaprofile
Contato: (19) 8136-2347
[email protected]
Skype: rc_antonialli
On Wed, Oct 17, 2012 at 7:19 PM, Rodrigo Antonialli
<[email protected]>wrote:
> Hi everyone!
>
> I'm running an old version of Geoserver (GeoServer 2.0-RC1). I've set all
> layers (read and write permissions) to be accessed only by
> ROLE_ADMINISTRATOR users.
>
> Geoserver side is working fine. When I open geoserver web interface, I
> can't see any layers. If proceed with login with admin user, all layers are
> shown.
>
> My problem is with my PHP/OpenLayers application.
>
> When I try to see my maps, an error saying that the layer doesn't exists
> is shown. That's expected, but now, how can I login from PHP to Geoserver
> to see my layers?
>
> I'd like to use the same users in PHP login and Geoserver login (I just
> replicated the users in users.properties).
>
> If I login into geoserver interface, and after in PHP application, I can
> see the maps. If I logout from geoserver interface, I can't see it anymore.
>
> I'm trying to post user and password to geoserver login servlet (I think
> it is a servlet) like that:
>
> function loginGeoserver($username, $password) {
>
> $geoserverURL = "http://mydomain/geoserver/j_acegi_security_check
> ";
>
> $data = http_build_query(array(
> "username" => $username,
> "password" => $password
> ));
>
> $context = stream_context_create(array("http"=>array(
> "method"=>"POST",
> "header"=>"Content-Type:
> application/x-www-form-urlencoded\r\n" .
> "Content-Length: ". strlen($post) . "\r\n",
> "content"=>$data
> )));
>
> $page = file_get_contents($geoserverURL, false, $context);
>
> return $page;
>
> }
>
> *mydomain was replaced only here =)
>
> When I echo $page, I see the geoserver login form and a message informing
> username or password are wrong.
>
> I've built a teste.html with a form inside it, at the same place this php
> function is set. From the HTML form, I can login to geoserver just pointing
> the method=post and action=
> http://mydomain/geoserver/j_acegi_security_check
>
> Can someone help me to solve this?? Am I using the wrong way to do it or
> it is a problem with my PHP script?!
>
> I'd appreciate any help!
>
> Best Regards,
>
> Rodrigo C. Antonialli
> ======================================
> Rio Claro - SP - Brasil
> LinkedIn: http://www.linkedin.com/in/rcaprofile
> Contato: (19) 8136-2347
> [email protected]
> Skype: rc_antonialli
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users