当前位置: 首页 > wzjs >正文

天津网站定制公司块链友情链接平台

天津网站定制公司,块链友情链接平台,在日本做网站的公司有哪些,做影视网站需要多少钱系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 文章目录 目录 系列文档目录 文章目录 前言 登录成功跳…

 系列文档目录

Vue3+Vite+TypeScript安装

Element Plus安装与配置

主页设计与router配置

静态菜单设计

Pinia引入

Header响应式菜单缩展

Mockjs引用与Axios封装

登录设计

登录成功跳转主页

多用户动态加载菜单 


文章目录

目录

 系列文档目录

文章目录

前言

登录成功跳转

1.修改路由

2.修改stores资料

3.修改登录

4.运行效果

后续



前言

         前一章节中,构建了一个用户登录界面、Mock.js 模拟用户登录 API 数据的生成,以及登录验证和多用户登录功能的实现。
        本章节中,将介绍如何安全地存储用户信息,以及如何通过Pinia状态管理工具来管理用户状态,详细说明如何实现页面跳转逻辑,确保用户在登录成功后能够进入主页面。


登录成功跳转

1.修改路由

        在本地开发环境中,尝试访问地址   http://localhost:5173/main   时,页面无法正常显示。通过对路由配置进行调整,以便当用户访问   /main   路径时,页面不仅能够正确加载,而且能够自动重定向至   /home   页面,调整后确保用户成功登录能够跳转到Home页。

修改重点内容:

redirect: { name: 'home' }, // 默认重定向到 home 子路由{path: '/main', // 如果确实需要 /main 路径redirect: { name: 'home' }, // 仅保留重定向规则},

完整代码:

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import Main from '@/views/Main.vue'; //
import Home from '@/views/Home.vue';
import UserInfo from '@/views/SysSettings/UserInfo.vue';
import AccountSetting from '@/views/SysSettings/AccountSetting.vue';
import Login from '@/views/login.vue';// 定义路由配置
const routes: RouteRecordRaw[] = [{path: '/',name: 'main',component: Main,redirect: { name: 'home' }, // 默认重定向到 home 子路由children: [{path: 'home',name: 'home',component: Home,},{path: 'UserInfo',name: 'UserInfo',component: UserInfo,},{path: 'AccountSetting',name: 'AccountSetting',component: AccountSetting,},],},{path: '/login',name: 'login',component: Login,},{path: '/main', // 如果确实需要 /main 路径redirect: { name: 'home' }, // 仅保留重定向规则},
];// 创建路由器
const router = createRouter({history: createWebHistory(),routes, // 使用已定义的路由配置
});export default router;

2.修改stores资料

        通过 Pinia 提供的存储机制,用户的关键信息,如身份验证令牌、用户名等,将被安全地保存,以便在用户会话之间保持状态的连续性。

        在 Pinia 状态管理库中,通过定义   actions   来管理用户信息的存储逻辑。这些   actions   将负责处理用户数据的加载、更新和保存操作,确保用户在应用中的信息能够被存储与获取,并在需要时被正确应用。通过精心设计的   actions  ,实现用户状态的无缝管理和跨会话的数据保持,从而提升用户体验并确保应用的响应性和可靠性。

// src/stores/index.ts
import { defineStore } from 'pinia';// 定义公共 store
export const useAllDataStore = defineStore('useAllData', {// 定义状态state: () => ({isCollapse: false, // 定义初始状态username: '',token_key: '',}),// 定义 actionsactions: {// 设置用户名setUsername(username: string) {this.username = username;},// 获取用户名getUsername(): string {return this.username;},// 设置 token_keysetTokenKey(token_key: string) {this.token_key = token_key;},// 获取 token_keygetTokenKey(): string {return this.token_key;},},
});

3.修改登录

        在用户登录成功后,用户信息和Token Key资料得到进行存储,以便在后续的应用使用中能够快速且安全地访问这些信息。

      store.setUsername(responseData.data?.username || '');store.setTokenKey( responseData.data?.token_key || '');router.push('/main');

完整代码 

<template><div class="login-container"><el-card class="box-card"><template #header><span>登录</span></template><el-form :model="loginForm" :rules="rules" ref="loginFormRef" label-width="100px" class="demo-loginForm"><el-form-item label="用户名" prop="username"><el-input v-model="loginForm.username"></el-input></el-form-item><el-form-item label="密码" prop="password"><el-input type="password" v-model="loginForm.password" show-password></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm">登录</el-button><el-button @click="resetForm">重置</el-button></el-form-item></el-form></el-card></div></template><script lang="ts" setup>import { reactive, ref } from 'vue';import { ElForm, ElFormItem, ElInput, ElButton, ElCard, ElMessage } from 'element-plus';import type { FormInstance, FormRules } from 'element-plus';import { login } from '@/api/user';import { useAllDataStore } from '@/stores';import { useRouter } from 'vue-router';const router = useRouter();    const loginForm = reactive({username: '',password: ''});const rules: FormRules = {username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],password: [{ required: true, message: '请输入密码', trigger: 'blur' }]};const store = useAllDataStore();const loginFormRef = ref<FormInstance | null>(null);// 封装登录请求处理逻辑// 定义 API 返回的数据结构interface LoginResponse {status_code: number;status: string;message?: string;data?: {api_key: string;username: string;token_key: string;role: string;email: string;};}const fetchLoginData = async () => {try {const responseData: LoginResponse = await login(loginForm); // 假设 login 返回的是 LoginResponseif (responseData.status_code === 200 && responseData.status === 'success') {store.setUsername(responseData.data?.username || '');store.setTokenKey( responseData.data?.token_key || '');router.push('/main');} else {ElMessage.error(`登录失败: ${responseData.message || '未知错误'}`);}} catch (error) {ElMessage.error('登录请求失败,请稍后再试');}
};const submitForm = () => {if (!loginFormRef.value) return;loginFormRef.value.validate((valid) => {if (valid) {fetchLoginData();} else {console.log('验证失败!');ElMessage.error('验证失败!');}});};const resetForm = () => {if (!loginFormRef.value) return;loginFormRef.value.resetFields();};</script><style scoped>.login-container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f2f5;}.box-card {width: 480px;}</style>

4.运行效果

          输入 http://localhost:5173/login后,输入账号与密码点击确认。

确认后自动跳转到/home,说明自动调整成功


后续

        在接下来的章节中,将深入探讨如何根据用户的权限和角色动态加载个性化的菜单。这一功能将允许系统根据用户的特定需求和访问级别定制菜单项,从而增强应用的灵活性和可扩展性

http://www.dtcms.com/wzjs/385086.html

相关文章:

  • 郑州网站建设出名吗百度 个人中心首页
  • 模具网站建设东莞网站推广行者seo08
  • 国办网站建设规范淘宝seo软件
  • 网站功能架构图怎么做优化网站排名费用
  • 巴州住房和城乡建设局网站自媒体平台收益排行榜
  • 深圳建网建网站十大广告联盟
  • 免费网站制作视频教程seo怎么做教程
  • 济南网站建设大标网络营销公关
  • 网页访问禁止怎么恢复网络优化大师app
  • 廊坊网站建设公司哪个好做网站企业
  • wps网站超链接怎么做凡科建站官网入口
  • 做网站虚拟主机是什么意思企业文化墙
  • 网站建设总做总结谷歌搜索引擎香港免费入口
  • 网站建设的运用场景资源网站排名优化seo
  • 重庆企业网站建设哪家专业宁波seo网络优化公司
  • 上海天华建筑设计有限公司地址seo搜索引擎优化工作内容
  • b2b网站产品群发工具中国品牌策划公司排名
  • 网络推广的调整和优化qq排名优化网站
  • 谷搜易外贸网站建设为什么外包会是简历污点
  • 品牌的定义如何做网站关键词优化
  • 国务院网站工程建设审批制度改革品牌策划方案ppt
  • 网站多ip 建设全球网站流量查询
  • 做平台的网站有哪些功能吗360推广登录入口官网
  • 用建站ABC做的网站_怎么营销湖南专业seo推广
  • 网站建设模板后台渠道营销推广方案
  • 建设淘宝网站的目的广告优化师适合女生吗
  • 如何看自己网站流量网上做广告宣传
  • 汽车网站开发背景百度搜索风云榜单
  • 为什么要完善网站建设美国疫情最新数据消息
  • 网站后台上传案例能同步到博客吗谷歌推广一年多少钱