登录相关记录

第一:获取验证码和cookie

created() {
// 获取验证码图片和uuid
this.getCode()
//获取cookie
this.getCookie()
},

uuid:唯一识别码,用于辨别。


 

cookie:使用js-cookie,处理cookie的API,

具体用法:

创建:

//expires: 30, 有效期30天 

Cookies.set('username', 'test', { expires: 30 })
获取:
Cookies.get('username')
删除:
Cookies.remove('username')

密码加密:
用RAS(公钥私钥)
基于RAS的JSEncrypt
// 加密
export function encrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(publicKey) // 公钥
return encryptor.encrypt(txt) //加密
}
// 解密
export function decrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey(privateKey) //私钥解密
return encryptor.decrypt(txt) 
}

客户端带着密码用户请求服务端,服务端返回token,客户端存储token,在请求头中设置token,下次请求时带上。
1、设置公共url的地方
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: 'xxxx',
// 超时
timeout: 10000
})
2、拦截器
为什么要拦截器?
要对请求和其响应进行特定的处理
 
service.interceptors.request.use(
(config) => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
if (getToken() && !isToken) {
config.headers.Authorization = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
if (
data === requestObj.data &&
requestObj.time - time < interval &&
url === requestObj.url
) {
const message = '数据正在处理,请勿重复提交'
}
 
响应拦截器
service.interceptors.response.use

 
posted @ 2022-04-16 16:48  诚实村诚实人  阅读(104)  评论(0)    收藏  举报