vue3.0 pinia存储token和用户信息
时间: 2025-06-21 11:50:31 浏览: 13
### 如何在 Vue 3.0 中使用 Pinia 存储 Token 和用户信息
#### 创建并配置 Pinia 实例
为了使 Pinia 能够管理应用程序的状态,在项目中需先创建一个 Pinia 的实例,并将其挂载到 Vue 应用上。
```javascript
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
const app = createApp(App)
app.use(createPinia())
app.mount('#app')
```
此操作确保了整个应用都可以访问由 Pinia 提供的状态管理功能[^1]。
#### 定义 Store 来保存 Token 及其他用户数据
通过定义 store 文件夹下的模块化文件,可以集中管理和持久化用户的认证信息和其他重要资料。
```typescript
// src/stores/authStore.ts
import { defineStore } from 'pinia';
export const useAuthStore = defineStore('auth', {
state: () => ({
token: localStorage.getItem('token') || '',
userInfo: JSON.parse(localStorage.getItem('userInfo')) || null,
}),
actions: {
setToken(newToken) {
this.token = newToken;
localStorage.setItem('token', newToken);
},
clearToken() {
this.token = '';
localStorage.removeItem('token');
},
setUserInfo(info) {
this.userInfo = info;
localStorage.setItem('userInfo', JSON.stringify(info));
},
logout() {
this.clearToken();
this.setUserInfo(null);
}
},
});
```
上述代码展示了如何利用 `defineStore` 方法创建名为 `'auth'` 的仓库,用于处理与身份验证有关的操作。这里不仅限定了初始状态还包括了一系列方法来更新这些值以及同步至浏览器本地存储以便刷新页面后仍能保持登录状态[^2]。
#### 在组件内调用 Store 并展示用户信息
一旦完成了上面两步设置之后就可以轻松地在整个应用程序的不同部分之间共享这个 auth store 了。下面是一个简单的例子说明怎样在一个单文件组件 (SFC) 内获取当前用户的计数器数值:
```html
<!-- src/components/UserProfile.vue -->
<template>
<div v-if="user_store.token">
<p>欢迎回来 {{ user_store.userInfo?.name }}</p>
<button @click="logout">登出</button>
</div>
<div v-else>
<p>您尚未登录。</p>
<button @click="loginWithDummyData">模拟登录</button>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { useRouter } from 'vue-router';
import { useAuthStore } from '../stores/authStore';
const router = useRouter()
const user_store = useAuthStore();
function loginWithDummyData(){
// 假设这是从 API 获取的真实令牌和用户详情...
user_store.setToken('dummy-token-value');
user_store.setUserInfo({ name: "张三", id: 1 });
}
function logout(){
user_store.logout();
}
</script>
```
这段模板中的逻辑会根据是否存在有效的 token 显示不同的内容给已登录或未登录的访客查看;同时也包含了两个按钮分别用来触发假定条件下的自动登录过程或是清除现有 session 数据实现退出动作[^3]。
阅读全文
相关推荐

















