restful Api 是无状态的,用户不登陆的情况下,如何区分用户身份

前后端分离有关用户答题

用户不登陆也可以答题,接口采用的方式是yii的restful 方式,现在用户不登陆答题的数据保存在session中,区分用户,但是restful是无状态的,不能用session,麻烦问一下这种情况下,应该怎么区分用户,将用户的题库信息保存在哪里

阅读 5k
5 个回答

每次请求的时候在请求头部(headers中带上uid、token),服务器每次获取uid和token进行身份判别。

主流方式是 Token,其中比较常见的方案有 OAuth / JWT 等等,自行选一个吧。

1.你这里流程设计有个问题,用户的答题数据要么存在浏览器里,要么存在服务端。用户不登录的情况下,存在服务器好像意义不大,所以只能存浏览器。所以你的问题:区分用户身份,更准确的表述为:如何区分浏览器。
2.关于区分浏览器,有很多的解决方案。比如browser-fingerprint.但这种肯定有误差,就看你实际需求了。

存cookie或者localStorage啊。在用户未登录情况下不需要区分用户,只有保存数据就行了

本地 localStorage 或 cookies 存token,每次发送请求时,在请求头中带上token

session_id($_SERVER['HTTP_TOKEN']); // 获取请求头中的token,并以token指作为session_id

其实就是session的原理,只是session_id不是用php默认的cookies传入,改成用请求头中的token传入了

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