需要登录验证的api调用

2014-09-01 18:39:23
王春生
34623
最后编辑:石洋洋 于 2018-05-02 11:30:31
简介:在使用api机制进行集成的时候,有的应用场景会涉及到会话登录。这种情况下面会话调用需要经过下面的三个步骤:

在使用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来获取相应的数据了。

备注:

目前该功能还只有在禅道项目管理软件中实现,蝉知门户和然之协同暂时还没有实现。

评论列表
消逝 2020-06-24 16:23:02
一、获得session。获取成功
二、验证用户身份。验证成功
三、调用相应其他的API还是让登录
王春生 2020-07-03 10:51:11
后续每次请求需要将会话session带上。
py 2020-06-11 16:31:15
1.获取session,操作成功
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"}
py 2020-06-11 15:11:11
1.获取sessionId 操作成功
{"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"}
这应该是登录失败了吧?
达芬奇 2020-06-09 17:04:37
我有个疑惑,没有登录,为什么能取到有效的session呢?取session时应该会做authorize吧?
达芬奇 2020-06-09 18:19:27
取session不会做验证,如果报401的话是验证阿帕奇的密码,把勾选框去掉即可
王春生 2020-06-11 07:51:28
只要和webserver有请求,就会启动session。session和授权是两个层面的。
zw 2020-06-09 10:01:59
我调用自己写的接口 就跳到 <html>
<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>
王春生 2020-06-11 07:50:34
自己新增的control方法需要在组织权限列表里面定义并赋给相应的分组。具体请参考我们的文档。
fhj 2020-05-29 17:14:46
一、获得session。获取成功
二、验证用户身份。验证成功
三、调用创建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\":\"&lt;p&gt;[\步\骤]&lt;\\/p&gt;&lt;br\\/&gt;&lt;p&gt;[\结\果]&lt;\\/p&gt;&lt;br\\/&gt;&lt;p&gt;[\期\望]&lt;\\/p&gt;&lt;br\\/&gt;\",\"os\":\"\",\"browser\":\"\",\"projectMembers\":{\"\":\"\",\"admin\":\"A:admin\",\"},\"assignedTo\":\"\",\"deadline\":\"\",\"mailto\":\"\",\"keywords\":\"\",\"severity\":3,\"type\":\"codeerror\",\"branch\":\"0\",\"branches\":[],\"color\":\"\",\"pager\":null}",
"md5": "54e0527c9f942d062732a5e632f99b0b"
}

但查看发现bug没有建起。大神可以解答下吗
王春生 2020-06-02 10:59:36
用f12查看表单提交的信息。
未来 2020-05-23 09:37:29
一、获得session。获取成功
二、验证用户身份。验证成功
三、调用相应的API。调用/zentao/task-view-12847.json?zentaosid=xxxx,但是还是让登录
王春生 2020-05-25 07:49:34
检查是否后台打开了密码弱口令检查
未来 2020-05-22 20:57:54
登录成功之后调用接口/zentao/task-view-12847.json?zentaosid=" + sessionId, sessionId也传入了,还是让我登录
roc 2020-04-26 16:56:44
/index.php?m=api&f=getSessionID&t=json 在11.4 版本返回中不是一个json格式了吗?
zw 2020-04-14 17:47:35
http://www.zentaopms.com/task-create-1-1-3.json?zentaosid=854c695950867a0b88071edbd9a8e431&t=json 我也带上session_id 了 但是还是要我去登录
王春生 2020-04-16 08:51:25
禅道的版本。返回的错误。
zt 2020-04-21 00:41:03
什么时候修复呢,我也是一直提示我 self.location='/zentao/my-changepassword.json';
王春生 2020-04-22 08:27:22
后台安全把用户密码检查关闭。
1/6
发表评论
评论通过审核后显示。