我正在使用Tomcat JDBCRealm在他们关注受保护页面时对用户进行身份验证。到达受保护页面时,身份验证可正常工作。现在我想使用cURL自动执行此过程。我已经编写了下面的代码,但它不起作用:
$domainUrl = "http://mydomain.com/protectedArea?j_username=john&j_password=doe";
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $domainUrl );
//curl_setopt ( $ch, CURLOPT_POST, true );
//curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt ( $ch, CURLOPT_TIMEOUT, 7 );
$output = curl_exec ( $ch );
curl_close ( $ch );
在tomcat日志中,我们只能看到http GET:
[07/Aug/2012:11:51:24 +0200] GET http://mydomain.com/protectedArea?j_username=john&j_password=doe HTTP/1.1 200 1618
而我们应该有类似的东西:
[07/Aug/2012:11:57:06 +0200] GET http://mydomain.com/protectedArea?j_username=john&j_password=doe HTTP/1.1 200 1516
[07/Aug/2012:11:57:06 +0200] POST http://mydomain.com/j_security_check HTTP/1.1 302 -
有人有任何想法吗?
感谢您的帮助
此致
答案 0 :(得分:0)
看起来你只有一个curl_exec
电话......你是否期望一次通话会导致两个单独的服务请求?您必须执行以下操作才能将基于表单的登录脚本编写为符合规范的服务器:
j_security_check
发出请求,并提供j_username
和j_password
个请求参数。 POST
最好避免Web服务器记录凭据。如果身份验证成功,您应该获得最初在#1中请求的资源。