需要登录验证的api调用

2014-09-01 18:39:23
王春生
19548
最后编辑:石洋洋 于 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来获取相应的数据了。

备注:

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

评论列表
william 2018-12-07 16:35:55
简单的方式就是在请求的url地址后面追加$sessionName=$sessionID。比如http://pms.zentao.net/index.json?zentaosid=xxxxxxx,我用这种形式为什么还是返回未登录
王春生 2018-12-10 09:16:59
要确保session登录过。
鲁帅 2018-11-07 17:04:33
那位大佬能发一下Java调用登录接口的demo示例
鲁帅 2018-11-07 16:32:34
java怎调用登录接口?
mz 2018-08-20 19:10:24
GD Version:bundled (2.1.0 compatible)
FreeType Support:1
FreeType Linkage:with freetype
T1Lib Support:
GIF Read Support:1
GIF Create Support:1
JPEG Support:1
PNG Support:1
WBMP Support:1
XPM Support:1
XBM Support:1
JIS-mapped Japanese Font Support:
有GD库,
一样是返回{"status":"success","data":"{\"title\":\"\\u7528\\u6237\\u767b\\u5f55\",\"noGDLib\":\"\\u8bf7\\u7528\\u624b\\u673a\\u6d4f\\u89c8\\u5668\\u8bbf\\u95ee\\uff1a<strong>http:\\\/\\\/localhost\\\/zentao\\\/<\\\/strong>\",\"referer\":\"\",\"s\":\"a88196a75c3fc512027923bf0a031686\",\"keepLogin\":\"off\",\"pager\":null}","md5":"7aa9105f7663ec741f62a2dd8580a009"}
王春生 2018-08-27 09:10:07
加群讨论一下吧。
greymon 2018-07-31 10:32:43
最近在做禅道使用git账号的授权登录功能,但是user模块里面新增方法,路由无法直接访问,一直跳登录页,只好重写了reset方法去实现,请问怎样在不占用reset的前提下,在user模块的扩展里面去新建一个类似reset方法那种可以直接访问的方法
王春生 2018-07-31 10:45:38
路由是不需要登记的。你需要扩展一下common模块里面的isOpenMethod方法。
watermelonbig 2018-07-25 09:56:01
http://www.zentao.net/官网真得挂掉很久了,感觉很不好,难道这个软件前景存在问题。
这个评论主要是针对api调用上的一个bug进行说明,避免有类似问题的朋友们进坑。
通过api创建task,调用api: /zentao/task-create-[projectID]-[storyID]-[moduleID]-[taskID]-[todoID].json
举个例子:http://192.168.81.7/zentao/task-create-1-1-3.json?zentaosid=mfn6e7p8ptan851aum5l7fcao0&t=json
使用POST方式并以表单方式提交几个必选项的参数数据:type, name
从创建新任务的表单上看只有type, name两个必选项,但如果照上面去做,得到的结果是success,但实际上并未创建成功。
原因就在于,大概从禅道9.0版本左右开始,提供了对多人任务或叫做团队任务的支持。在task模块的model文件中的create方法中,这行代码是有问题的:foreach($this->post->assignedTo as $assignedTo)
这意味着,在post携带的参数中必须要有assignedTo参数,且必须是数组类型,才能正确进入该循环中。而写库的功能操作都在这个循环中了。
所以,如果不去纠正源码错误的话,就必须要在提交时带上assignedTo[]参数。你可能注意到了是assignedTo[],可以赋值为空,但参数名必须是数组。
王春生 2018-07-27 09:05:18
你的ip地址是啥?可能是百度云加速的节点有问题。我联系百度处理一下。你加我们QQ群也行。请联系徐贺:1492153927,他会邀请你加群。
2018-07-12 19:12:34
想在js中通过post请求返回json数据 怎么返回数据control 或者 model都可以
王春生 2018-07-23 09:18:39
看我们的代码。
llwsykll 2018-04-16 18:00:56
我写了一个get的接口,来查询这个用户下面都有哪些任务,接口权限也在common_model里放开了,之前都是可以使用的,但是今天下午突然在调用时返回302,并且重定向到了project_create页面,今天上午还是可以打开的,也没有改动过代码,请问这是什么问题呢?
王春生 2018-04-17 09:28:51
debug。
kyle 2018-02-22 12:42:26
我写了一个golang的自动创建bug的实现.
https://github.com/kai1987/zentao-api
王春生 2018-02-22 22:34:42
赞!
尹凯伦 2018-05-09 15:26:29
您好,我最近也想做一个自动创建bug的功能,有一些问题想请教您一下,方便加一下qq(1057722709)吗?
leon 2017-09-13 15:28:50
安装了gd库还是这样保存
{"title":"\u7528\u6237\u767b\u5f55","noGDLib":"\u8bf7\u7528\u624b\u673a\u6d4f\u89c8\u5668\u8bbf\u95ee\uff1a<strong>http:\/
王春生 2017-09-15 09:01:26
要确认gd库有正确加载,并重启webserver.
1/3
发表评论
评论通过审核后显示。