Cookie /Session(sign_in) LocalStorage/SessionStorage

代码

思路:

用户注册

前端判断填写是否为空,判断密码是否确认

  若填写无误,发出POST请求

后台获取到POST请求后,拿到用户的注册信息,进行判断

  判断邮箱格式,若邮箱格式错误,后台响应一个JSON格式的字符串提示,前端拿到提示后给客户提示

  判断密码是否确认,若没有确认,则返回一个400(前端同时进行判断,并给用户提示)

若邮箱密码均确认成功

  后台判断注册邮箱是否已被占用(数据库中是否已存在用户此刻注册的此邮箱)

  若已被占用,后台返回一个JSON格式的字符串提示,前端拿到提示后给客户提示

若邮箱没有被占用

  后台将用户传入的注册信息存储到数据库

  同时页面跳转到登录页面

用户登录

前端判断邮箱、密码格式,无误则发出POST请求

后端取到POST请求,拿到用户的登录信息,进行判断

  判断邮箱格式,错误则后台响应一个JSON格式的字符串提示,前端拿到提示后给客户提示

若格式正确,后台读取数据库,判断用户输入的登录信息是否在数据库中存在

  若不存在则响应400(前端提示邮箱密码不匹配)

  若存在则允许登录,响应200,跳转首页

  (登录成功的一瞬,设置cookie,浏览器记录用户cookie)

打开首页显示用户信息

  后台读取用户的cookie,读取email

  读取数据库,遍历数据库找到此cookie带的email相匹配的email及其密码

  判断若找到,则在首页显示密码

 

关于Cookie

特点:

1.服务器通过Set-Cookie响应头设置Cookie

2.浏览器得到Cookie之后,每次请求都要带上Cookie

3.服务器读取Cookie就知道登录用户的信息

注意:

1.在Chrome登录了Cookie,用Safari访问,Safari不会带上Cookie

2.Cookie存在C盘的一个文件里

3.Cookie存在安全问题,信息能作假(用session解决用户随意篡改cookie的问题)

4.Cookie有效期默认20分钟,后端可以强制设置有效期

5.Cookie只能带上自己域名的Cookie

理解:

1.服务器通过 Set-Cookie 头给客户一串字符串

2.客户每次访问相同域名的网页时,都必须带上这段字符串

3.客户要在一段时间内保存这个Cookie

4.Cookie 默认在页面关闭后就失效,后台代码可以任意设置过期时间。

关于Session

理解session:

1.服务器中有一块内存(哈希表)保存了所有session

2.客户登录时,服务器给客户端的cookie分配一个SessionId(随机数)

3.客户端访问服务器时,服务器读取SessionId

3.每次用户访问服务器时,服务器根据客户的SessionId,读取对应的session,从而知道用户隐私信息

4.这块内存(哈希表)就是服务器上的所有session

LocalStorage特点 (持久化存储)

1.LocalStorage跟HTTP无关,HTTP不会带上LocalStorage的值

2.只有域名相同的页面才能相互读取LocalStorage(没有同源那么严格)

3.每个域名LocalStorage最大存储量为5Mb左右(每个浏览器不一样)

4.常用场景

  记录有没有提示过用户(记录不敏感的无用信息,不记录密码)

5.LocalStorage永久保存,除非用户清零缓存

SessionStorage特点 (会话存储)

与LocalStorage的1 2 3特点相同,也是window的一个属性

在用户关闭页面后(会话结束)就失效

几个问题:

Cookie和Session的关系?

一般情况下,Session是基于Cookie实现的,因为Session将SessionId给到Cookie,发给客户端;Session依赖于Cookie。

Cookie和LocalStorage的区别?

每次请求时,Cookie都会被浏览器带给服务器;LocalStorage不会被带到服务器上。

Cookie存在服务器中,储存量一般是4k,LocalStorage存在C盘某个文件中,一般是5Mb左右。

LocalStorage和SessionStorage的区别?

SessionStorage在用户关闭页面后(会话结束)就失效;LocalStorage永久保存,除非用户清零缓存。

原文地址:https://www.cnblogs.com/BUBU-Sourire/p/11333462.html