From 8b1e89463c0263dcbac19aadfd598b48e6c010be Mon Sep 17 00:00:00 2001 From: zhaowenkang Date: Thu, 19 Dec 2024 21:12:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- work/src/api/index.js | 20 +++++---- work/src/stores/token.js | 22 ++++++++++ work/src/views/HomeWork.vue | 9 ++-- work/src/views/Login.vue | 18 ++++---- work/src/views/UpdateWork.vue | 2 +- work/src/views/WorkDetail.vue | 97 +++++++++++++++++++++++-------------------- 6 files changed, 102 insertions(+), 66 deletions(-) create mode 100644 work/src/stores/token.js diff --git a/work/src/api/index.js b/work/src/api/index.js index f26b2a2..fbcead0 100644 --- a/work/src/api/index.js +++ b/work/src/api/index.js @@ -17,21 +17,27 @@ import axios from "axios"; - +import { useTokenStore } from "../stores/token"; const service = axios.create({ // baseURL: 'http://192.168.8.191:8080', // baseURL: 'http://localhost:8080', baseURL: '/api', }); -// 假设你的token存储在localStorage中,名为 'access_token',你可以根据实际情况修改获取方式 -const getToken = () => { - return localStorage.getItem('access_token'); -}; - // Axios的请求拦截器,在这里添加token到请求头 + +axios.interceptors.request.use(config => { + const token = useTokenStore(); + if (token) { + config.headers['token'] = `${token}`; + } + return config; +}, error => { + return Promise.reject(error); +}); + service.interceptors.request.use(config => { - const token = getToken(); + const token = useTokenStore(); if (token) { // 一般后端会约定一个请求头的字段名来接收token,常见的如 'Authorization',并要求按照一定格式传递,比如 'Bearer ',这里按照此格式添加,你需要根据后端实际要求调整 config.headers['token'] = `${token}`; diff --git a/work/src/stores/token.js b/work/src/stores/token.js new file mode 100644 index 0000000..2394bb6 --- /dev/null +++ b/work/src/stores/token.js @@ -0,0 +1,22 @@ +import {defineStore} from 'pinia'; +/* +使用pinia进行状态管理,不能刷新页面 +Vue中将一些全局的数据保存在某个位置,Vue项目的任何一个组件中,都可以访问它 +*/ +export const useTokenStore = defineStore('token',{ + //状态管理 + state:()=>({ + token: sessionStorage.getItem('token'), + }), + actions:{ + changeToken(token){ + this.token = token; + //长久保存token + sessionStorage.setItem('token', token) + }, + clear(){ + this.token = null; + sessionStorage.removeItem('token'); + } + } +}); \ No newline at end of file diff --git a/work/src/views/HomeWork.vue b/work/src/views/HomeWork.vue index 1636efe..2b77ed4 100644 --- a/work/src/views/HomeWork.vue +++ b/work/src/views/HomeWork.vue @@ -43,7 +43,7 @@