1 web开发模式
开发模式有两种,一种是服务端直接返回html字符串,另一种是前后端分类
服务端直接返回html字符串是这样的
这样做的优缺点如下
- 优点
- 加载页面快,这样会让设备的能耗减小,对于移动端来讲更省电
- 利于搜索引擎获取数据(SEO),使用这种方式你的网站更有可能排在前面
- 缺点
- 会占用过多的服务器资源
- 开发效率低
前后端分离的优缺点如下
- 优点
- 开发效率高
- 服务器压力小
- 缺点
- 不利于SEO
交互性弱,需要SEO 时最好使用 服务端直接返回html字符串 模式,比如公司官网
交互性强,不需要SEO 时最好使用前后端分离的模式,比如后台管理系统
根据需要可以结合两种模式用于同一个网站,比如首页服务器渲染,其余前后端分离
2 身份认证
登录账户就是身份认证的过程,可以有不同的方式,比如手机验证码登录,邮箱密码登录,二维码登录。身份认证后可以给不同的用户不同的体验
HTTP协议拥有无状态性,每一次请求都是独立的,服务器不会保留每一次的请求状态。所以在登录后,服务端不会记录登录信息
为了突破HTTP协议的无状态性,从而记录请求的用户信息,在这个过程中我们一般会使用session,cookie,JWT,这三种技术都相当于是超市的会员卡
不同的开发模式下推荐使用不同的技术,服务端渲染推荐使用session,前后端分离推荐使用JWT
2.1 cookie
cookie是存储在用户浏览器中一段不超过4KB的字符串(每一段cookie不超过,不是总共不超过4KB),字符串中包含多个键值对,这些信息用于控制cookie的有效期,安全性,使用范围等
不同域名下的cookie各自独立,每当客户端发起请求时,客户端会自动将当前域名下的所有未过期的cookie一同发送到服务端
在客户端首次请求时,服务端会通过响应头的方式响应cookie,之后cookie会自动存储在客户端的浏览器
之后再次请求时,客户端会通过请求头的方式将cookie发送给客户端
cookie不具有安全性,所以一些敏感数据不建议放在cookie中,比如用户名与密码
cookie有下面几个特点
- 每次请求自动发送
- 每个cookie根据域名独立
- 存在过期时限
- 每一个cookie最大4KB(不是所有cookie最大4KB)
- 不安全
2.2 session
session需要在服务端存储一些数据。相较于cookie,session更加安全
在客户端首次请求时,服务端会响应给客户端一个cookie,同时在服务端中开辟一个存储空间用于存储用户数据并存储
在客户端再次请求时,客户端会把cookie发到服务端,服务端通过发过来的cookie确定用户数据存储的地方,然后将存储的内容响应给客户端
2.3 JWT
JWT的全称是JSON Web Token
session需要配合cookie才能实现,默认情况下cookie不支持跨域访问,当涉及到跨域的时候使用session比较麻烦,如果不涉及到跨域建议使用session(JWT将信息存在客户端,并不是很安全)
再次发送的时候请求头的字符键是 Authorization ,值是Bearer+空格,然后写token,比如
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IlN1eXUiLCJpYXQiOjE2NzI3MzgyMDAsImV4cCI6MTY3MjczODIzMH0.CSXlREeK3U8qw8cNQ1wyysIGQXvvBIRuGOY5RXnkbyA
JWT的处理方式与cookie类似
JWT通常由三部分组成,分别是Header(头部),Payload(有效荷载),Signature(签名) 这三者用 点 分隔 ,比如 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IlN1eXUiLCJpYXQiOjE2NzI3MzgyMDAsImV4cCI6MTY3MjczODIzMH0.CSXlREeK3U8qw8cNQ1wyysIGQXvvBIRuGOY5RXnkbyA
只有Payload是用户信息,Header和Signature是确保安全用的