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的地方不一致導致的,暫且記錄到這。