Django 前后端分离 token和cookiesession对比

Posted hooo-1102

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 前后端分离 token和cookiesession对比相关的知识,希望对你有一定的参考价值。

HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证

 

1、cookie

用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用户的sessionID

数据需要客户端和服务器同时存储

用户再进行请求操作时,需要带上cookie,在服务器进行验证

cookie是有状态的

 

2、token

用户进行任何操作时,都需要带上一个token

token的存在形式有很多种,header/requestbody/url 都可以

这个token只需要存在客户端,服务器在收到数据后,进行解析

token是无状态的

 

token相对cookie的优势

   1、支持跨域访问 ,将token置于请求头中,而cookie是不支持跨域访问的;

   2、无状态化, 服务端无需存储token ,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session;

   3、 无需绑定到一个特殊的身份验证 方案(传统的用户名密码登陆),只需要生成的token是符合我们预期设定的即可;

   4、 更适用于移动端 (androidios,小程序等等),像这种原生平台不支持cookie,比如说微信小程序,每一次请求都是一次会话,当然我们可以每次去手动为他添加cookie,详情请查看博主另一篇博客;

   5、 避免CSRF跨站伪造攻击 ,还是因为不依赖cookie;

   6、 非常适用于RESTful API ,这样可以轻易与各种后端(java,.net,python…)相结合,去耦合

以上是关于Django 前后端分离 token和cookiesession对比的主要内容,如果未能解决你的问题,请参考以下文章

Aspnet Mvc 前后端分离项目手记关于token认证

vue+flask前后端分离解决csrf token问题

Django 集成JWT 基于Token凭证方式,实现前后端分离

前后端分离项目——登录Token校验思路

JWT-token—前后端分离架构的api安全问题

前后端分离下如何防御CSRF攻击