【php】关于php开发app接口的问题,求有经验的大神解答

php开发app接口,用户登录问题

情况是这样的,之前的用户登录接口,登录成功以后服务器不存session,可能在app那端存着吧。所以即便用户登录成功,在调某些接口的时候,需要user_id还是要当作参数传递过去,而不是从服务器的 session里获取。

今天想修改登录注册的接口,我同事说app接口没有session的概念,但是我总觉得应该有其他方式将用户会话存在服务器。

所以我想请教各位大神:

1. php开发app接口有没有`session`的概念?
2. 如果没有,用户会话是怎么处理的?就是当前是否在登录状态

谢谢大家!

阅读 5.8k
10 个回答

可以看看jwt
自包含(Self-contained):负载中包含了所有用户所需要的信息

首先你弄个登陆接口,app调用这个接口,你验证他传递过来的username password 之后,给他返回一个 token 。

token 你建个表保存,表里存 user_id token expire_data 等字段,注意token 和 user_id 是唯一的。

以后他每次请求其他的接口,只需要把这个token带给你,你验证token就可以。

传递的token 设置加密/设置过期/保证唯一 基本上就可以了。

我是设置了token以及过期时间,用token来验证

1.请求头里带用户 usernamepassword ,到服务器端做验证,通过才继续下边业务逻辑。
优点:防止了服务器端 api 被随意调用。
缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。

2.第一次请求,要求 usernamepassword ,验证通过,发送 cookie 到客户端, app 保存 cookie 值。
每次请求带上 cookie
优点:和 pc 上浏览器认证的原理一样了。

以上两点,只有注册用户,才能有权访问业务逻辑。
而有些 app有大量的不需要注册数据api

3.制定一个 token 生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。
缺点:随机串生成规则要保密。

如果我的答案解决了你的问题,请点击采纳答案

可以这样弄,不同用户通过授权接口获得不同的token,对token 设置好过期时间,让client每次请求把token放在header内,并定时更新token

用token来代替传统的存储在客户端cookie中的session_id,然后token在redis等数据库中作为键名,键值则为用户uid,并且可以通过自带的过期机制来模拟session_id

我们公司是,token跟过期时间,每次登陆,都会重新刷新token

登录是服务端生成登录成功的标识返回给客户端,客户端请求是带上登录标识,服务端通过登录表示验证用户信息

安全的做法是access_token。这点可以看看微信的api接口;

简单做法,就是user_id;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏