# 前后端分离
本项目使用前后端分离的开发模式,前端负责数据展示与用户交互,后端负责提供数据接口,前后端通过 API
进行数据交互。
本项目使用 jwt
解决前后端通信身份验证问题。
# 原理
用户通过账号密码登录时,后端校验成功后通过秘钥对用户id等信息进行加密生成一个具有时效性的 token
返回给前端。前端每次调用接口时,在接口 header
中携带该 token
,后端接受后使用秘钥对其解密获取用户信息,若未被篡改,则可确认是该用户操作。
# 本项目中
本项目中接口 header
中均可携带 token
,若接口无需鉴权,会忽略该 token
。
对于有些可携带可不携带的接口,如影视详情接口,登录用户可获取本人是否收藏、评分等信息;若未登录,则不会返回这些信息;若 token
失效,则按未登录处理。
# 相关代码
# http
配置
import { HOST } from '../config'
function request(url, data = {}, method = 'GET') {
let header = {}
try {
let token = wx.getStorageSync('token')
if (token) {
header = {
// 注意,Bearer 后面用户 token 连接处有一个空格
Authorization: 'Bearer ' + token
}
}
} catch (e) {
}
return new Promise((resolve, reject) => {
wx.request({
url: HOST + url,
data,
method,
header,
success: res => {
},
fail: err => {
}
})
})
}