先看看系统界面,就2个主要界面
第一个是登录界面
第二个是登录后主体界面
前端用TypeScript+Vue3+ElementPlus写,后端用php8+thinkphp8
第一点,功能增强点,原来的维持组件间的登录状态提升为用pinia来改写
main.js文件变动如下
// main.js
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persist'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { router } from './router'
import App from './App.vue'
const pinia = createPinia()
pinia.use(piniaPersist)
const app = createApp(App)
app.use(pinia)
app.use(ElementPlus)
app.use(router)
app.mount('#app')
新建tokener.js文件
// stores/tokener.js
import { defineStore } from 'pinia'
export const useTokenerStore = defineStore('tokener', {
state: () => {
return { token: 0 }
},
actions: {
setToken(value) {
this.token = value
},
},
persist: {
enabled: true,
strategies: [
{ storage: localStorage, paths: ['token'] },
],
}
})
pinia默认使用sessionStorage来存储,这里使用了localStorage,也可以为不同的变量混用存储方式
然后看看在新写的展示图片列表的地方是怎么使用存储好的token令牌的,这也是第二个新增点,其他地方用法同理
<script lang="ts" setup>
import { onMounted, ref } from 'vue'
import axios from 'axios