vue中cookie导入问题
前情提要:在实现修改密码页面时,后台未捕捉到token,原因是前端没有将token从登录页面取出并传送到后台,在csdn搜索了几天并无解决方案,一是没有修改密码页面的详细传token代码,二是涉及到其他封装axios的方法并不实用(实际说白了就是看不懂。)
后经同事指点,采用js-cookie携带token访问后台的方法。
1.安装js-cookie
原链接:vue中使用js-cookie
npm install js-cookie --save
使用:
import Cookie from 'js-cookie'
Cookie.set(‘token',token)
Cookie.get('token')
该npm下载的方法对于我的电脑来说并不适用,先开始是npm版本太高,cmd提示显示版本需要在【4,9】区间内,于是删除了node.js重新安装版本8.12.0,其间因为无法使用sudo命令,又重新导入sudo命令,方法如下:
在Windows中实现sudo命令——命令行环境中获取管理员权限
一切准备就绪后,输入npm指令,结果又出现无法解决的错误,百度很久找到的一个博客只有寥寥几句并不详细,于是放弃了这个方法,错误如下:
2.手动导入js-cookie
无意中找到的方法,试了一下,结果有用。nice~
原链接:vue中全局导入js-cookie及使用
补充链接:js-cookie插件的安装和使用
index.html中导入
·<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 网页图标 -->
<link rel="icon" href="./static/img/favicon.ico" />
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>xxxxx</title>
</head>
<body>
<div id="app"></div>
<!-- 在这里导入 -->
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
</body>
</html>
vue中cookie携带token问题
再解决完js-cookie导入后,前端运行报错,未定义token,由此又csdn了几天仍无结果,于是求救同事,几下就解决了。
我的思路是,需要在request.js里定义token,但实际上,他是直接在修改密码页面和登录页面用let定义。
定义token
修改密码页面
change(){
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
let params = new URLSearchParams();
params.append("newPassword",this.ruleForm.newPassword);
params.append("password",this.ruleForm.password);
params.append("username",this.ruleForm.username);
let token = localStorage.getItem("token")
Cookie.set('token',token)
Cookie.get('token')
request.post("/user/updatePassword",params).then(res => {
if (res.code == '200') {
this.$router.push('/login'); //登录成功之后进行页面的跳转,跳转到主页
this.$message.success('修改成功!')
} else {
this.$message.error('修改失败!')
}
})
}
})
},
登录页面
login() {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
let params = new URLSearchParams();
let username = this.ruleForm.username;
params.append("username",this.ruleForm.username);
params.append("password",this.ruleForm.password);
request.post("/user/login",params).then(res => {
if (res.code == '200') {
localStorage.setItem("token", res.data) // 缓存用户信息
localStorage.setItem("ms_username", username) // 缓存用户信息
Cookie.set('token',res.data)
this.$router.push('/'); //登录成功之后进行页面的跳转,跳转到主页
this.$message.success('登录成功!')
} else {
this.$message.error('登录失败!')
}
})
}
})
}
后续:后台捕捉到的token仍为null,有可能是前端和后端存放token的地方不一致导致的,暂且记录到这。