需要登录验证的api调用

2014-09-01 18:39:23
王春生
32500
最后编辑:石洋洋 于 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-03-18 13:45:37
禅道mysql如何设置可以显示字段解释呢?
王春生 2020-03-20 06:51:05
后台,二次开发,接口,能看到数据库字典。
cl 2020-03-10 17:48:44
调用http://XXX/zentao/action-comment-story-1193.json?zentaosid=tjm812deghf79lm4c9ov422sm4&t=json 一直报
<html>
<meta charset='utf-8' />
<style>
body {
background: white
}
</style>
<script>
if(parent !== window) parent.location.reload(true);
</script>
调用查询的api 都可以正常返回,但是调这个api 一直报这样的问题,大神可以解答下吗
王春生 2020-03-10 21:56:32
看数据保存了吗?
wlq 2020-02-26 14:09:33
第三方服务调取api接口,获取sessionID后,验证登陆成功,之后调取接口都返回登陆页面代码,这个是什么原因?
<html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/index.php?m=user&f=login&t=json&referer=L2luZGV4LnBocD9tPXVzZXImZj12aWV3JnQ9anNvbiZ6ZW50YW9zaWQ9YjU0YW40cWdoZHJxN2xrbWxkczI0bHNvdWI.YWNvdW50PTE=';

</script>
王春生 2020-02-26 14:34:16
验证成功之后后续的每次请求都需要带着session才可以。
sunshine 2020-02-25 16:25:26
认证完,访问这个接口pro/group-browse.json,返回self.location='/pro/user-login-L3Byby9ncm91cC1icm93c2UuanNvbg==.json是什么原因
王春生 2020-02-26 14:34:49
后续访问的时候都需要加上session。
Jeff 2020-02-11 16:04:01
获取到对应的会话、登录后,隔一段时间使用这个session去做新增bug操作会告诉失效,返回登录页面,会话有效的时间是多久?
王春生 2020-02-13 20:09:59
默认应该是15分钟吧。
Paul 2019-11-26 16:31:48
你好,现在调user-login.json接口,始终返回:{"title":"\u7528\u6237\u767b\u5f55","noGDLib":"\u8bf7\u7528\u624b\u673a\u6d4f\u89c8\u5668\u8bbf\u95ee\uff1a<strong>http:\/\/172.20.156.73:80\/zentao\/<\/strong>","referer":"\/zentao\/","s":"","keepLogin":"off","rand":518535747,"pager":null},请问这是什么问题呢,用的是11.6.4版本
王春生 2019-11-28 10:42:50
你要发一个referer。把你使用的禅道的地址传过来。应该是被拦截了。
老哥 2020-04-01 21:38:00
老哥,你这问题怎么解决的?我按照操作来,和你返回的结果一样
bx 2019-11-07 20:12:05
请求 /zentao/api-getsessionid.json 这个地址 也是返回 <html>
<meta charset='utf-8' />
<style>
body {
background: white
}
</style>
<script>
self.location='/zentao/my-changepassword.json';

</script>
bx 2019-11-07 20:09:59
我按照步骤携带了参数,但是通过api调用一直显示这个 self.location='/zentao/my-changepassword.html'; 有人能帮忙解答下吗
王春生 2019-11-08 11:19:36
使用token吧。或者到后台里面把密码安全检查关闭。密码太简单了。
Felix 2019-10-19 15:03:40
zentaophp如果想要让一个页面不登录也能访问,要在哪里做例外?
bx 2019-11-07 20:14:43
在后台 -> 二次开发 -> 应用中配置免密登录,然后跳转时请求携带参数就可以
java小杜 2019-10-18 15:50:54
我需要实现这样一个功能,不走禅道的登陆页面,直接通过用户名密码访问到禅道的首页????@王春生大佬
1/5
发表评论
评论通过审核后显示。