php开发app接口,用户登录问题
情况是这样的,之前的用户登录接口,登录成功以后服务器不存session
,可能在app那端存着吧。所以即便用户登录成功,在调某些接口的时候,需要user_id
还是要当作参数传递过去,而不是从服务器的session
里获取。
今天想修改登录注册的接口,我同事说app接口没有session
的概念,但是我总觉得应该有其他方式将用户会话存在服务器。
所以我想请教各位大神:
1. php开发app接口有没有`session`的概念? 2. 如果没有,用户会话是怎么处理的?就是当前是否在登录状态
谢谢大家!
可以看看jwt
自包含(Self-contained):负载中包含了所有用户所需要的信息
我是设置了token以及过期时间,用token来验证
首先你弄个登陆接口,app调用这个接口,你验证他传递过来的username password 之后,给他返回一个 token 。
token 你建个表保存,表里存 user_id token expire_data 等字段,注意token 和 user_id 是唯一的。
以后他每次请求其他的接口,只需要把这个token带给你,你验证token就可以。
传递的token 设置加密/设置过期/保证唯一 基本上就可以了。
1.请求头里带用户
username
和password
,到服务器端做验证,通过才继续下边业务逻辑。优点:防止了服务器端
api
被随意调用。缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。
2.第一次请求,要求
username
和password
,验证通过,发送cookie
到客户端,app
保存cookie
值。每次请求带上
cookie
。优点:和
pc
上浏览器认证的原理一样了。以上两点,只有注册用户,才能有权访问业务逻辑。
而有些
app
有大量的不需要注册数据api3.制定一个
token
生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。缺点:随机串生成规则要保密。
可以这样弄,不同用户通过授权接口获得不同的token,对token 设置好过期时间,让client每次请求把token放在header内,并定时更新token
用token来代替传统的存储在客户端cookie中的session_id,然后token在redis等数据库中作为键名,键值则为用户uid,并且可以通过自带的过期机制来模拟session_id
我们公司是,token跟过期时间,每次登陆,都会重新刷新token
这是我心怀疑惑的时候,在我们站内提问的
你同事说 app没有session概念,我觉得不准确!希望我之前的提问对你有帮助!
登录是服务端生成登录成功的标识返回给客户端,客户端请求是带上登录标识,服务端通过登录表示验证用户信息
安全的做法是
access_token
。这点可以看看微信的api接口;简单做法,就是
user_id
;