php写webservice,验证问题如何解决?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php写webservice,验证问题如何解决?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3829字,纯文字阅读大概需要6分钟。
内容图文
查了一些资料,好像都是每一次调用webservice方法时,都需要附带客户验证信息,能否像普通的网页浏览那样,登录后,在会话期内任意访问都不需要再次提供客户验证信息呢?
回复讨论(解决方案)
在session中保留id
那是提供webservice方决定的!
那是提供webservice方决定的!
不单是提供webservice方决定,还有访问方式,比如使用basic验证,用浏览器访问的话,会提示一个验证框,如果验证通过,同一进程再次访问就不会提示框了。
我的问题在于curl请求webservice的话,似乎就必须每次都提供验证信息来完成调用。有没有一次验证的解决方案呢?
你查查看cookie,HTTP header中有没有id之类的值,每次请求的时候都要将这个值发给服务器
你查查看cookie,HTTP header中有没有id之类的值,每次请求的时候都要将这个值发给服务器
思路还是不够完整
你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']
参考:http://php.com/manual/en/features.http-auth.php
function authenticate() { header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); echo "You must enter a valid login ID and password to access this resource\n"; exit;}if (addslashes($_SERVER['PHP_AUTH_USER'])!= 'adminname' || addslashes($_SERVER['PHP_AUTH_PW'])!= 'adminadmin') { header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); echo "对不起,无权进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的;}else{ echo "进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的; echo "Welcome: {$_SERVER['PHP_AUTH_USER']}
\n"; echo date('h:i:s') . "
";// echo "Old: {$_REQUEST['OldAuth']}";// echo "
"; //暂停 10 秒 sleep(10); //重新开始 echo date('h:i:s'); header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); }//可以直接使用试试看是不是你想要的结果
你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']
参考:http://php.com/manual/en/features.http-auth.php
应该不是我要的。我想问的包含两方面的问题:
1、开放的webservice有哪些验证机制?比如我说key是一种,http的basic验证也是一种,还有其他哪些方式呢?
2、想知道有哪些验证机制是为了这个目的:有没有一种验证机制,在php调用webservice时,只需在第一次请求中发送验证信息,以后调用就不需要再次验证了--类似于普通页面浏览的过程,填写一次登陆信息后,只要不超时,访问这个网站的其他任何页面都不需要再登陆。
引用 7 楼 ihefe 的回复:
你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']
参考:http://php.com/manual/en/features.http-auth.php
应该不是我要的。我想问的包含两方面的问题:
1、开放的webservice有哪些验证机制?比……
这个就是只验证一次, 你试过我给你的代码吗?把最后
echo date('h:i:s');
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
去掉
呃也就是你说的http basic验证
今天回头来看这个问题,似乎可以用curl发送cookie的方式解决。
myservice.php
myproxy.php
myclient.php
用户在myclient.php(或者其他地方登陆),通过后可直接访问myproxy.php,在myproxy.php中通过curl的方式连同cookie一起请求myservice.php。
各位的意见如何?
lz说的完全可以采用session机制来实现,当你发送请求时,在服务器端建立session,服务器处理完用户请求后,将sid发送给客户端,客户端可以记录在cookie里,只要sid不过期,就不用重复发送验证信息了。session就是提供这种机制的。
lz说的完全可以采用session机制来实现,当你发送请求时,在服务器端建立session,服务器处理完用户请求后,将sid发送给客户端,客户端可以记录在cookie里,只要sid不过期,就不用重复发送验证信息了。session就是提供这种机制的。
但是session机制怎样应用到webservice中呢?
在session中保留id
在session中保留id
还是不够清楚,和我说的通过“curl代理将验证传递的方式”有什么不同吗?
不用每次都传密码的,这样有安全隐患,可以用临时的token来解决
直接不启用cookies啦、 session啦 等类似的机制不行吗 ?
哎,PHP就是没有完善的东西呀。
内容总结
以上是互联网集市为您收集整理的php写webservice,验证问题如何解决?全部内容,希望文章能够帮你解决php写webservice,验证问题如何解决?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。