需要登录验证的api调用

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

备注:

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

评论列表
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
我需要实现这样一个功能,不走禅道的登陆页面,直接通过用户名密码访问到禅道的首页????@王春生大佬
李远 2019-09-30 09:21:37
POST /zentao/www/index.php?m=bug&f=edit&bugID=370 HTTP/1.1

-----------------------------212764937718799189871075351809
Content-Disposition: form-data; name="uid"

5d91509b7630a

这个uid是什么值?如何赋值?
王春生 2019-10-04 14:38:07
uid可以忽略。
lzh 2019-08-09 20:32:15
我这边认证成功:user-login.json?account=admin&password=123456&zentaosid=xxxxxxx
这个认证成功了,返回了用户信息,但是调用这个api bug.json?zentaosid=xxxx 时总是提示:self.location='/zentao/user-login-L3plbnRhby9idWctYnJvd3NlLmpzb24=.json'。
这是怎么处理和理解?
lzh 2019-08-09 20:54:57
访问 bug.json 返回需要登录验证;
访问 bug-browse.json 就能够返回bug列表数据。
前者是在开源版-》后台-》二次开发-》bug查看到的api;
后者是在页面访问bug.json跳转返回的请求api;
这两者有什么区别呢?
xiaobin 2019-07-29 15:33:40
debug路径common=》model=》checkPriv()
xiaobin 2019-07-29 15:32:44
用户密码已经修改成复杂(界面登陆显示“高")
xiaobin 2019-07-29 15:31:08
为什么写一个前后端分离的程序,前端调用API,debug到里面的USER,modifyPassword一直是True,modifyPasswordReason=weak,这会导致API调用一直返回:
"<html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/pms/www/my-changepassword.json';

</script>
"
王春生 2019-07-30 11:56:18
第一次登陆修改密码可以关掉。后台安全里面。
lzh 2019-08-09 20:30:50
user-login.json?account=admin&password=123456&zentaosid=xxxxxxx
这个认证成功了,返回了用户信息,但是调用这个api bug.json?zentaosid=xxxx 时总是提示:self.location='/zentao/user-login-L3plbnRhby9idWctYnJvd3NlLmpzb24=.json'
我也遇到这个问题,怎么处理的麻烦回复一下 2019-08-06 11:27:30
user":{"birthday":"0000-00-00","whatsapp":"","lastTime":"1565059982","role":"","gender":"f","modifyPassword":true,"scoreLevel":"0","clientStatus":"offline"

</script><html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/zentao/my-changepassword.json';
Leo 2019-07-28 18:40:30
写错了不是token,是cookie
1/4
发表评论
评论通过审核后显示。