需要登录验证的api调用

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

备注:

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

评论列表
duke 2021-10-12 15:44:13
登录时传的password 可以是密文吗?如果不行有其他的解决办法吗
王春生 2021-10-18 10:45:40
可以。
duke 2021-10-09 15:07:41
你好,我现在遇到了如下问题:
我通过/zentao/user-login.json?get&account="+UserName+"&password="+pwd 这个url 进行系统登录,这里的密码无论是明文还是密文,均可;
但是我通过 /zentao/api-getsessionid.json 获取sessionid后 再通过 /zentao/user-login.json?account="+UserName+"&password="+pwd+"&zentaosid="+sessionId
这个url则只能用明文密码进行登录了,请问是为什么?
我现在有个需求,是希望通过明文或者密文登录系统,然后进行禅道的交互(比如,bug 解决/关闭/激活 等),请问有什么办法可以实现吗?
王春生 2021-10-18 10:45:01
你参考下我们control方法里面的判断逻辑,跟踪下。
聂先生 2021-09-30 16:37:20
我下载安装了最新的15.5版本的系统,用api测试工具调试新的api接口。用api可以正常登录,获取sessionid,但是用api来创建一个用户需求,就一直不能成功。能看看怎么回事吗?
正常通过页面,我看html代码中的访问网址是:/www/story-create-3-10-0-0-0-0-0-0--story.html
我用api工具post网址改成:/www/story-create-3-10-0-0-0-0-0-0--story.josn. 对应的参数也设置上了,运行后,返回的state:"success",但是数据没有被保存,用户需求没有被正常创建。
王春生 2021-10-18 10:43:37
你用firefox或者chrome的浏览器工具跟踪下我们post表单传递的数据。要保证数据传输是正确的。
ferderer 2021-06-24 14:35:00
调用其它接口时怎么判断传的sessionID是不是已经登录,我调用创建需求接口时随便传个sessionID返回的状态也是success
{
"data": "{\"locate\":\"http:\\/\\/192.*.*.*\\/zentao\\/user-login-L3plbnRhby9zdG9yeS1jcmVhdGUuanNvbg==.json\"}",
"status": "success",
"md5": "708cccc71946aa7f206067853fa9686e"
}
王春生 2021-06-25 08:38:03
sessionid无所谓的,你传参也可以,获取也可以。只要能够正常登陆,这个sessionid所对应的session就可以有登陆信息。
无名 2021-09-08 14:50:07
我试下这个
无名 2021-09-08 13:35:40
不错哦
II 2021-03-17 15:06:04
http://pm.zentao.com/biz/user-login.json?zentaosid=j0fc342jlt6s619pun84ul14s4,然后在form data里填写account和password,对吗?我在使用的时候,有时候不能成功登录。
Skrrr 2021-03-11 11:19:17
用户已经登录,调用获取bug列表的api但是返回了1,问题是我的bug里面已经有新增的两个bug数据
http://127.0.0.1:81/zentao/m=api&f=getModel&module=bug&methodName=getBugList&params=productID=1,branch=0
请问哪里出了问题?
王春生 2021-03-12 08:26:05
可以加我们qq群讨论下。
伟浩 2021-03-03 10:15:26
怎么样可以免登录访问接口。 oss登录的文档没有说明type的参数是什么。能提供文档链接吗?谢谢
cruise 2021-03-01 09:07:37
的确是存在像以前开发者提出的问题,获取session,并且登录(非admin用户)成功后,再次调用其他接口时,且调用时已经带上了zentaosid=返回的sessionid,还是会默认使用创建应用里设置的用户(我这里设置的是admin)再登录一次,这个登录发生在checkEntry里,也就是说传入的zentaosid并没有起作用。
风吹屁屁蓝 2021-02-10 12:37:03
localhost/check_api.php 酱紫调?
王春生 2021-02-14 15:33:32
参考我们二次开发文档中关于接口免登陆部分的文档。
风吹屁屁红 2021-02-10 12:29:46
有没有机制开发不需要登陆验证的api 只能放到www下调吗
1/7
发表评论
评论通过审核后显示。