session与cookie

 

session与cookie的区别:

 

分    类 cookie session token
存储形式: 存储在客户端 存储在服务器。 token是用户身份的验证方式,我们通常叫它:令牌
结合使用

将session数据加密,然后存储在cookie中。

这种专业术语叫做client side session。flask采用的就是这种方式

通过cookie存储一个session_id,然后具体的数据则是保存在session中

如果用户已经登录,则服务器会在cookie中保存一个session_id,

下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

 

Token的使用流程:

 

A:当用户首次登录成功(注册也是一种可以适用的场景)之后,

服务器端就会生成一个 token 值,这个值,会在服务器保存token值(保存在数据库中),

再将这个token值返回给客户端;

B:客户端拿到 token 值之后,进行本地保存。

(SP存储是大家能够比较支持和易于理解操作的存储);

C:当客户端再次发送网络请求(一般不是登录请求)的时候,

就会将这个 token 值附带到参数中发送给服务器;

D:服务器接收到客户端的请求之后,会取出token值与保存在本地(数据库)中的token值做对比。

 区   别:

两种类型

*有生命周期

*无 生命周期

两种实现方式

*依赖于cookie

*URL重写

 

Token的身份认证逻辑:

对比一:如果两个 token 值相同, 说明用户登录成功过!当前用户处于登录状态!

对比二:如果没有这个 token 值, 则说明没有登录成功;

对比三:如果 token 值不同: 说明原来的登录信息已经失效,让用户重新登录。

 路径问题:  客户端每次请求只发送当前路径下和“直系”关系的父路径的cookie(父路径的页面是不能访问子路径和兄弟路径的cookie的)

setcookie如果不设置路径,默认为当前页面的路径,父亲路径的页面是无法访问的

 同一个session的窗口共享一个session  

Token的安全性

我们可以保存认证过的Token记录在服务器上,来添加一个附加的安全层,然后在每一步验证Token的时候验证这个记录(比如每次客户端请求API时检查这个Token的合法性)。这将会阻止第三方伪装一个Token,也将会使得服务器可以失效一个Token。

 典型应用:

 *三个月不用再登录

*购物车

 *用户登录

*购物车也可以用session实现

 
 安全性:  可修改,不可靠  可靠  

posted on 2019-04-11 17:37  暖暖_8023  阅读(102)  评论(0编辑  收藏  举报

导航