为了账号安全,请及时绑定邮箱和手机立即绑定

api 使用session替代token 的利弊在哪?

api 使用session替代token 的利弊在哪?

API
拉风的咖菲猫 2018-10-03 21:22:56
补充:几种常用的验证机制最近写app的api,使用laravel 框架的session替代了传统的存贮到数据库的token作为校验登录用户的方法!以下是我们目前的做法登录后后台生产session,会往返回信息head头里写一个set_cookieios和安卓 会从head头里得到拿到这个cookie的东西然后再请求需要登录的地方的时候,ios和安卓会把cookie放到head头里,让框架完成自我的校验ps:有人说不安全有人说不好管理有人说性能问题有谁具体研究过,请帮我分析分析其利弊我个人认为的观点:说session不安全的,感觉有点牵强,假如真的一点不安全的话,那网站也就完全被暴露了,而且laravel的session也是有自己加密的方式,不是直接暴露的!有人说不好管理,放在redis里了,我不太知道不好管理在哪里。性能问题,session可以存贮的位置有很多,mysql,文件,redis,我觉得性能也不是问题。我也不知其弊端在哪里,有谁具体研究过,请帮我分析分析其利弊也请大家有想法的各抒己见,我们一起讨论下
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

对于 api 来说,token 通过 header 传输,对应的用户数据放在 redis 里,这样移动端保存 token 比较方便,移动端保存 cookie 不是很容易,浏览器里还是用 cookie + session 方便,集群中共享 session 不是啥问题。

查看完整回答
反对 回复 2018-10-14
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

在存储过等同的情况下,在只是简单运用上,我只能说session与token没有本质的区别,二者不都是一串被加密过的字符串,拿他来做校验都一样。

以上,是因为你把token拿来当作用户是不是当事人做这么一个简单的校验的情况下。

当然,如果我们抛开一些比较极端的操作,token比session也有很大的区别:

  • token可以存在任何位置(cookie、local storage)

  • token比session更容易跨域。

  • CORS预检查时token比较更简单。

  • token有更多的控制权,比如当token过期时,你可以拿通过刷新token,让用户一直保持有效登录。

等……其实如果你只是单纯拿着token做一下自己网站内用户登录检验的话是无太多区别的。

但假如token指的是OAuth Token提供认证和授权这类机制的话,那么就可以把session甩开N条街了,甚至是已经完全是两种不同的概念。

假设有这么一个场景,你们用户在你们网站产生的订单,而另一家公司是专业ERP公司;而你的用户希望他的订单同时授权给这家ERP公司使用的情况下,难道你希望用户拿在你家网站的用户名和密码给这家ERP公司吗?

这时候OAuth Token就有意义了,OAuth Token的授权大概是这样的:

  • ERP需要调用我们提供的登录界面。

  • 用户输入用户名和密码后,我们再向ERP发送一个TOKEN。

  • ERP拿TOKEN换数据。

总之,如果你只是在自己网站内部上使用二者没有什么太多区别。而如果你的API是在不同终端上使用,token会更方便。


查看完整回答
反对 回复 2018-10-14
  • 2 回答
  • 0 关注
  • 2155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信