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.pswp.cn/diannao/74056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74056.shtml
英文地址,請注明出處:http://en.pswp.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;支持星座、儒略日、干支、生肖、節氣、節日、彭祖百忌、吉神(喜神/福神/財神/陽貴神/陰貴神)方位、胎神方位、沖煞、納音、星宿、八字、五行、十神、建除十二值星、青龍名堂等十二神、黃道…