VSCode创建VUE项目(四)增加用户Session管理

将用户信息存储或者更新到Session

sessionStorage.setItem("userID",loginform.value.username);
sessionStorage.setItem('loginTime', Date.now());

获取Session信息

const storedUserInfo = sessionStorage.getItem('userID');
const loginTime = sessionStorage.getItem('loginTime');

移除Session信息

sessionStorage.removeItem("userID");
sessionStorage.removeItem('loginTime');

以下是代码修改:

效果:当进入登录页面的时候之前登录过且没有超时,直接跳转到登录后界面,登录后的界面长时间没有操作,直接跳转登录界面

LoginView.vue

<template><div class="login-container dis-h"><div class="login-form  dis-h"><div class="dis-v left"><span> 欢迎~ </span><span> VUE 新世界 </span></div><div class="dis-v right"><div class="username dis-h"><el-input placeholder="请输入用户名" v-model="loginform.username" /></div><div class="pwd dis-h"><el-input type="password" placeholder="请输入密码" v-model="loginform.pwd" /></div><div class="btn dis-h"><el-button size="large" style="width:220px;background-color:#626aef;color:#fff;font-weight:bold; "@click="commit">登录</el-button></div></div></div></div>
</template>
<script setup>
import { ref, getCurrentInstance ,onMounted} from "vue"
import router from '@/router';
import { ElMessage } from 'element-plus';const { appContext } = getCurrentInstance()
const axios = appContext.config.globalProperties.$axios;
var loginform = ref({username: "",pwd: ""
})var commit = async () => {try {var response = await axios.get('/v1/aifunction/employee/info?emplCode=' + loginform.value.username);//保存日志信息console.log("--------------调用后台出参{"+loginform.value.username+"}--------------------");console.log(response);if (response && response.data) {if (response.data.defaultDeptCode == loginform.value.pwd) {// 将用户信息和登录时间存储到 sessionStoragesessionStorage.setItem("userID",loginform.value.username);sessionStorage.setItem('loginTime', Date.now());ElMessage.success("YES,成功啦啦啦啦啦!");router.replace("./about")}else {ElMessage.error("Sorry,请检查用户名和密码!失败!" + response.data.defaultDeptCode);}}else {ElMessage.error("Sorry,请检查用户名!没有该用户!");}} catch (error) {//登录失败,提示错误信息console.log(error)//this.$message.error('登录失败,请检查用户名和密码')ElMessage.error("Sorry,失败!" + error);}}onMounted(() => {const storedUserInfo = sessionStorage.getItem('userID');const loginTime = sessionStorage.getItem('loginTime');if (storedUserInfo && loginTime) {const currentTime = Date.now();const sessionTimeout = 2 * 60 * 1000; // 会话超时时间,这里设置为 2 分钟const elapsedTime = currentTime - parseInt(loginTime);if (elapsedTime < sessionTimeout) {router.replace("./about")}}
});
</script>
<style>
.login-container {width: 100vw;height: 100vh;background-image: url('../assets/background.jpeg');align-items: center;justify-content: center;background-repeat: no-repeat;/* 背景图片不重复 */background-size: cover;/* 背景图片覆盖整个div区域 */background-position: center;/* 背景图片居中显示 */
}.login-form {width: 600px;height: 300px;/* background-color: red; */}.login-form .left {width: 50%;height: 100%;align-items: left;justify-content: center;font-size: 1.6rem;font-weight: bold;background: linear-gradient(to right bottom, rgba(136, 209, 234, 0.80) 5%, rgba(215, 193, 187, 0.80) 100%);color: #fff;text-indent: 1rem;
}.login-form .right {width: 50%;height: 100%;background-color: rgba(255, 255, 255, 0.90);align-items: center;justify-content: center;
}.login-form .username,
.pwd,
.btn {padding: 0.5rem 0;}/*水平排列子元素*/
.dis-h {display: flex;
}/*垂直排列子元素*/
.dis-v {display: flex;flex-direction: column;
}
</style>

AboutView.vue

<template><div class="about"><h1>This is an about page</h1></div><div><el-button @click="loginOut">退出登录</el-button></div>
</template><script setup>
import router from '@/router';
import { ref, onMounted } from 'vue';var loginOut=function(){sessionStorage.removeItem("userID");sessionStorage.removeItem('loginTime');router.replace("/")
}onMounted(() => {const storedUserInfo = sessionStorage.getItem('userID');const loginTime = sessionStorage.getItem('loginTime');if (storedUserInfo && loginTime) {const currentTime = Date.now();const sessionTimeout = 2 * 60 * 1000; // 会话超时时间,这里设置为 2 分钟const elapsedTime = currentTime - parseInt(loginTime);if (elapsedTime >= sessionTimeout) {loginOut();}else{sessionStorage.setItem('loginTime', Date.now());}}
});</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/74056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

威联通 后台可用命令查看Bash

一、查看所有可用命令的方法 列出所有外部命令&#xff08;二进制文件&#xff09; 外部命令通常存放在系统路径&#xff08;如 /bin, /usr/bin, /sbin, /usr/sbin&#xff09;中&#xff1a; bash ls /bin /usr/bin /sbin /usr/sbin # 直接列出命令目录&#xff08;结果较长&…

游戏MOD伴随盗号风险,仿冒网站借“风灵月影”窃密【火绒企业版V2.0】

游戏MOD&#xff08;即游戏修改器&#xff09;是一种能够对游戏进行修改或增强的程序&#xff0c;因其能够提升游戏体验&#xff0c;在玩家群体中拥有一定的市场。然而&#xff0c;这类程序大多由第三方开发者制作&#xff0c;容易缺乏完善的安全保障机制&#xff0c;这就为不法…

Kubernetes Init 容器:实现 Nginx 和 PHP 对 MySQL 的依赖检查

在设计 Kubernetes Pod 时&#xff0c;如果需要在启动 Nginx 和 PHP 之前等待 MySQL 启动完成&#xff0c;可以通过 初始化容器&#xff08;initC&#xff09; 来实现。初始化容器可以用于检查 MySQL 是否可用&#xff0c;只有在 MySQL 可用后&#xff0c;才会继续启动主容器&a…

SSL/TLS 和 SSH 介绍以及他们的区别

目录 SSL/TLS SSL/TLS工作原理的核心步骤握手阶段&#xff08;Handshake Protocol&#xff09;加密通信阶段&#xff08;Encrypted Communication Phase&#xff09;会话恢复&#xff08;Session Resumption&#xff09; SSH SSH 加密机制的核心步骤 SSH 和 SSL 区别 SSL/TLS …

QT二 QT使用generate form 生成常用UI,各种UI控件

一 。没有使用general form 和 使用 general form 后&#xff0c;file层面和代码层面的不同比较 file层面的不同 代码层面的不同&#xff0c; 在 使用了general form之后&#xff0c;在主界面的构造方法中&#xff0c;使用ui->setupUi(this),就完成了所有UI的处理。 而之…

Qt中多线程

在Qt中实现多线程主要有两种常用方式&#xff1a;基于QThread的子类化和QObjectmoveToThread的Worker模式。以下是详细说明和示例代码&#xff1a; 1. 传统方法&#xff1a;继承 QThread&#xff08;适用于简单任务&#xff09; #include <QThread> #include <QDebug…

从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析

海螺AI&#xff1a;基于多模态架构的下一代认知智能引擎 海螺AI核心模型架构基础模型&#xff1a;abab-6.5语音模型&#xff1a;speech-01 视频生成管线关键子系统快速接入海螺AI 蓝耘MaaS平台什么是MaaS平台&#xff1f;支持的大模型蓝耘搭载海螺AI的优势 实战应用教程如何注册…

二分查找上下界问题的思考

背景 最近在做力扣hot100中的二分查找题目时&#xff0c;发现很多题目都用到了二分查找的变种问题&#xff0c;即二分查找上下界问题&#xff0c;例如以下题目&#xff1a; 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…

android adjust 卸载与重装监测

想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…

算法系列——有监督学习——4.支持向量机

一、概述 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种应用范围非常广泛的算法&#xff0c;既可以用于分类&#xff0c;也可以用于回归。 本文将介绍如何将线性支持向量机应用于二元分类问题&#xff0c;以间隔&#xff08;margin&#x…

【Mani_skill】success判断的核心调用逻辑

1. 可视化调用流程&#xff08;from Deepseek-r1-Cursor&#xff09; [RL算法调用 env.step()]↓ 调用 env.get_info()↓ 调用 env.evaluate() → 返回包含 success 的字典↓ 将 success 存入 info 字典↓ 在 step() 中处理终止条件&#xff1a; terminated success | fail

【图像处理基石】什么是HDR图片?

1. 什么是HDR图片&#xff1f; HDR&#xff08;高动态范围图像&#xff0c;High Dynamic Range&#xff09;是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明&#xff1a; 核心原理 动态范围&#xff1a;指图像中最亮和最暗区域之间的亮度差。人眼能…

嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充

1. 外设引脚重映射 1.1 定义 在STM32中&#xff0c;每个外设的引脚都有默认的GPIO端口&#xff0c;但有些引脚可以通过重映射寄存器将功能映射到其他端口。这种机制称为引脚重映射&#xff0c;主要用于解决引脚复用冲突或优化PCB布线。 1.2 重映射的类型 部分重映射&#x…

如何选择合适的 AI 模型?(开源 vs 商业 API,应用场景分析)

1. 引言 在 AI 迅猛发展的今天&#xff0c;各类 AI 模型层出不穷&#xff0c;从开源模型&#xff08;如 DeepSeek、Llama、Qwen&#xff09;到商业 API&#xff08;如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini&#xff09;&#xff0c;每种方案都有其优势与适用…

攻克 3D 模型网站建设难题,看迪威系统优势

在当今数字化时代&#xff0c;3D 模型广泛应用于建筑设计、游戏开发、工业制造、文化创意等诸多领域。拥有一个功能强大的 3D 模型网站&#xff0c;对于企业展示产品、设计师分享作品、教育机构开展教学等都具有重要意义。然而&#xff0c;构建这样一个网站却并非易事&#xff…

使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息

1、保证在微信公众平台配置socket合法域名 2、项目中使用mqtt 建议在package.json中配置"mqtt": “4.1.0”&#xff0c;使用这个版本的依赖 页面中引入mqtt并配置连接 // ts-ignoreimport * as mqtt from mqtt/dist/mqtt.js; //要使用这里面的const state reacti…

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)

1.问题描述&#xff1a; 使用华为内置的MapComponent&#xff0c; 发现显示不出来。查看日志&#xff0c; MapRender底层有报错。 解决方案&#xff1a; 麻烦按以下步骤检查下地图服务&#xff0c;特别是签名证书指纹那部分。 1.一般没有展示地图&#xff0c;可能和没有配置…

现代复古像素风品牌海报游戏排版设计装饰英文字体 Psygen — Modern Pixel Font

Psygen 是一种像素化等宽字体&#xff0c;具有强烈的复古未来主义和网络风格美学。块状的、基于网格的字体采用了早期的计算机界面、街机游戏排版和 ASCII 艺术。 该字体支持拉丁文、西里尔文和希腊文脚本&#xff0c;使其适用于多语言设计。扩展的字符集还具有唯一的符号和方…

小科普《DNS服务器》

DNS服务器详解 1. 定义与核心作用 DNS&#xff08;域名系统&#xff09;服务器是互联网的核心基础设施&#xff0c;负责将人类可读的域名&#xff08;如www.example.com&#xff09;转换为机器可识别的IP地址&#xff08;如192.0.2.1&#xff09;&#xff0c;从而实现设备间的…

lunar是一款无第三方依赖的公历 python调用

lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具&#xff0c;支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道…