前端的token到底该存到哪里?

前端的存储方式主要是cookie,localStorage,sessionStorage这几种。

比如在中后台项目中,用户登录后端返回的token,前端到底该放在哪里?或者什么情况下用什么存储?

是不是为了安全,中后台项目都是每次重新打开页面,都要重新登陆,我的理解是这种情况下就不用存到localStorage里長期了,那么存到sessionStorage不行吗?为啥我看项目里存到cookie比较多?

而且封装axios的时候每次都从cookie里拿出token,设置到headers的authorization里,在sessionStorage拿出来不也一样吗?还不用每次把cookie也发送到服务端了。

求大佬解答

阅读 28.3k
3 个回答

我们项目里都是存到localstorage里面的,如果没有其他需求,没必要存在cookie里面

一般来说,如果每次登陆都会请求获取token鉴权接口的话,存放在sessionStorage就可以了,如果需要token数据持久化,实现自动登陆等功能,则存在localStorage,cookie只在设置的cookie过期
时间之前才有效,并且cookie适合保存很小的数据,会在客户端与服务端之间来回传递,而localStorage需要指定,不会自动把数据发给服务器。一般token里面保存了token的有效时间及用户信息,后端从请求头中获取后解出来判断,再给前端返回相应的状态码。(token过期跳转至登陆页面,403表示无权限,无法访问接口)

localstorage安全一点点点, 这样可以减少一些csrf攻击

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