登录只用cookie有什么弊端吗?

我在项目中制作登录的时候,利用的是后台生成token并将token缓存在后台同时给前端,前端保存token在cookie中,当与后台api交互的时候,在请求中携带token,后端利用token与缓存的token做对比,判断请求是否有效。
这样做存在什么弊端吗?为什么我看网上都在提登录时要使用session.

阅读 4.1k
3 个回答

大同小异吧,使用 session 也要将登录信息放到 cookie 中,通过 cookie 传给后台;不同的是,使用 session 会将登录信息存储在文件中,而你存在缓存中例如 redis 是在内存中。

用cookie没有弊端吧,但使用session会导致应用有状态,有状态的应用扩展需要将状态的数据独立,使用token可以实现无状态,但无状态token,例如jwt确是有弊端的,比如无法主动让一个token失效,但服务扩展是非常方便的。各有优缺点,个人觉得如果应用的业务足够复杂,无状态是不能满足要求的,还是得用到会话跟踪技术(session)

session 的储存位置是你的服务器,一般有效期是会话周期。session的主要根据保存在客户端的cookie中的session_Id判断,适合储存敏感信息。
cookie的储存位置是客户端,对用户是可见的,可以用户保存用户登录的凭证,但是建议设置成服务器只读 HttpOnly,禁止js操作cookie。(关于 HttpOnly 谷歌一下)
一般的实行自动登录是使用cookie,在登录后保存一个临时的机密信息使用session(因为session保存在服务器端)。
同时服务器端也应该做出防范措施,包括生存Token的随机性,完整性、不泄露用户信息、远程销毁等。
唯一的问题是cookie会增加网络流量,宏观表现是当cookie体积变大后,网络请求会变慢。

推荐问题