- 1 zentaoPHP二次开发简介
-
2. zentaoPHP框架扩展机制
- 2.1 扩展机制简介
- 2.2 新增独立模块
- 2.3 对控制层(control)扩展
- 2.4 对模型层(model)扩展
- 2.5 对视图层(view)扩展
- 2.6 对样式表和js进行扩展
- 2.7 对语言配置进行扩展
- 2.8 增加新的类库
-
3. zentaoPHP框架API机制
- 3.1 api机制简介
- 3.2 需要登录验证的api调用
- 4 zentaoPHP框架命令行机制
需要登录验证的api调用
- 2014-09-01 18:39:23
- 王春生
- 38335
- 最后编辑:石洋洋 于 2018-05-02 11:30:31
- 分享链接
在使用api机制进行集成的时候,有的应用场景会涉及到会话登录。这种情况下面会话调用需要经过下面的三个步骤:
一、获得session。
首先要访问api模块的getSessionID方法,获得session。GET方式:?m=api&f=getSessionID&t=json
PATHINFO: api-getsessionid.json
返回的格式中包含sessionName和sessionID。
在后续的访问中,必须以cookie的方式,或者GET方式,将session传递给服务器。
简单的方式就是在请求的url地址后面追加$sessionName=$sessionID。比如http://pms.zentao.net/index.json?zentaosid=xxxxxxx
注意:上面地址中的sid参数名称可以在config文件里面通过 $config->sessionVar 设置,比如禅道config/config.php文件中 $config->sessionVar = 'zentaosid'。老版本禅道默认是 sid,新版本禅道默认是 zentaosid,可以具体查看一下使用禅道的代码中是如何定义的。
二、验证用户身份。
然后可以访问user模块的login方法,来进行用户身份的验证。用户身份验证,需要提供用户名和密码,以post方式传递给user-login方法。
变量名为: account, password。
三、调用相应的API。
用户验证通过之后,就可以通过页面调用的api,或者超级model调用的api来获取相应的数据了。
备注:
目前该功能还只有在禅道项目管理软件中实现,蝉知门户和然之协同暂时还没有实现。
登录:{"data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\/\\/172.16.10.139:8081\\/zentao\\/<\\/strong>\",\"referer\":\"\\/zentao\\/\",\"s\":\"\",\"keepLogin\":\"off\",\"rand\":1709649964,\"pager\":null}","md5":"e4f444dca422a855bb19240ad0620175","status":"success"}
为啥?
登录:{"data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\/\\/172.16.10.139:8081\\/zentao\\/<\\/strong>\",\"referer\":\"\\/zentao\\/\",\"s\":\"\",\"keepLogin\":\"off\",\"rand\":1709649964,\"pager\":null}","md5":"e4f444dca422a855bb19240ad0620175","status":"success"}
为啥?
二、验证用户身份。验证成功
三、调用相应其他的API还是让登录
2.用户登录,操作成功,返回了用户信息数据
3.接着调用其它查询数据接口的时候,返回下面内容,cookie里面也是有sessionId的,这个应该怎么解决呢?
{"status":"success","data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\\/\\\/121.201.78.10\\\/zentao\\\/<\\\/strong>\",\"referer\":\"\\\/zentao\\\/bug-browse-0-unclosed-0-27-20-1.json\",\"s\":\"\",\"keepLogin\":\"off\"}","md5":"f2a53cafa8d938bb685f05f829fcd88f"}
{"status":"success","data":"{\"title\":\"\",\"sessionName\":\"sid\",\"sessionID\":\"u8ptiqjrsgqvh14hnnchdnqsh6\",\"rand\":4059}","md5":"a9e250d4180369af70f2e7de4979275b"}
2.登录
通过RestTemplate调用登录接口,返回的结果是这样的
<200 OK,{"status":"success","data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\\/\\\/121.201.78.10\\\/zentao\\\/<\\\/strong>\",\"referer\":\"\",\"s\":\"\",\"keepLogin\":\"off\"}","md5":"bd91a5672b09a5bff3af4a52d0d893a0"},{Date=[Thu, 11 Jun 2020 07:05:28 GMT], Server=[Apache], Set-Cookie=[lang=zh-cn; expires=Sat, 11-Jul-2020 07:05:28 GMT; path=/zentao/, theme=default; expires=Sat, 11-Jul-2020 07:05:28 GMT; path=/zentao/, sid=u8ptiqjrsgqvh14hnnchdnqsh6; path=/], Expires=[Thu, 19 Nov 1981 08:52:00 GMT], Cache-Control=[private], Pragma=[no-cache], Vary=[Accept-Encoding], Content-Length=[312], Keep-Alive=[timeout=5, max=99], Connection=[Keep-Alive], Content-Type=[text/html; Language=UTF-8]}>
3.后续调用其它接口,返回的结果是这样的
{"status":"success","data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\\/\\\/121.201.78.10\\\/zentao\\\/<\\\/strong>\",\"referer\":\"\\\/zentao\\\/bug-browse-15.json\",\"s\":\"\",\"keepLogin\":\"off\"}","md5":"19b4620fb3942bfe4cfa2b9b71d7b626"}
这应该是登录失败了吧?
<meta charset='utf-8' />
<style>
body {
background: white
}
</style>
<script>
self.location='/index.php?m=user&f=deny&t=json&module=story&method=getstroybyid';
</script>
二、验证用户身份。验证成功
三、调用创建bug的API。调用/pro/bug-create-43-0-moduleID=1804.json?zentaosid=73nu4ijkn4es3ud4v2u0u5p7g1,返回一大段json(都是些产品信息的json),
{
"status": "success",
"data":"{\"title\":\"SPF-PRO\提Bug\",\"products\":{\"66\":\"LAS6200\底\层dll\",\"65\":\"\。。。。。。。。
,\"moduleID\":\"1804\",\"projectID\":0,\"taskID\":0,\"storyID\":0,\"buildID\":0,\"caseID\":0,\"runID\":0,\"version\":0,\"testtask\":0,\"bugTitle\":\"\",\"pri\":3,\"steps\":\"<p>[\步\骤]<\\/p><br\\/><p>[\结\果]<\\/p><br\\/><p>[\期\望]<\\/p><br\\/>\",\"os\":\"\",\"browser\":\"\",\"projectMembers\":{\"\":\"\",\"admin\":\"A:admin\",\"},\"assignedTo\":\"\",\"deadline\":\"\",\"mailto\":\"\",\"keywords\":\"\",\"severity\":3,\"type\":\"codeerror\",\"branch\":\"0\",\"branches\":[],\"color\":\"\",\"pager\":null}",
"md5": "54e0527c9f942d062732a5e632f99b0b"
}
但查看发现bug没有建起。大神可以解答下吗
二、验证用户身份。验证成功
三、调用相应的API。调用/zentao/task-view-12847.json?zentaosid=xxxx,但是还是让登录