ソースを参照

添加token验证

DESKTOP-GBVU60Q\dell 1 年間 前
コミット
1c5b15279b
4 ファイル変更36 行追加12 行削除
  1. 2 2
      src/router/index.js
  2. 2 1
      src/store/index.ts
  3. 1 1
      src/utils/request.js
  4. 31 8
      src/views/Login/Login.vue

+ 2 - 2
src/router/index.js

@@ -95,11 +95,11 @@ const whiteList = ['/login']
 
 // 路由加载前(全局路由前置守卫)
 router.beforeEach((to, from, next) => {
-	console.log('store', store.roleId)
+	console.log('store', store.token)
 	NProgress.start();
 
 	// token存在的情况
-	if (store.roleId || to.path=="/login") {
+	if (store.token || to.path=="/login") {
 		next();
 		NProgress.done();
 	} else {

+ 2 - 1
src/store/index.ts

@@ -20,7 +20,8 @@ export const Store = defineStore({
 			layerID:'',//控制唯一底图加载id
 			markID:'',//控制标注id
 			keepAlives:['Map3DMain'],//控制加载缓存页面
-			userport:''
+			userport:'',
+			token:'',//token
 		}
 	},
 	getters:{

+ 1 - 1
src/utils/request.js

@@ -65,7 +65,7 @@ request.interceptors.response.use(
 
 		const res = response.data;
 		// 响应成功
-		if (res.success == true) {
+		if (res.success == true || res.message == 'success') {
 			return res;
 		}
 		// 错误提示

+ 31 - 8
src/views/Login/Login.vue

@@ -11,6 +11,7 @@
 	import {
 		Store
 	} from '@/store/index'
+import { set } from 'nprogress';
 	store = Store()
 	import sanwei from '@/assets/video/sanwei.mp4'
 	let route = undefined;
@@ -38,13 +39,15 @@
 			</div>
 			<div class="loginbox-input">
 				<span class='iconfont icon-mima1'></span>
-				<el-input v-model="loginForm.password" type="password" clearable show-password placeholder="请输入密码" @keyup.enter="onLoginClick" />
+				<el-input v-model="loginForm.password" type="password" clearable show-password placeholder="请输入密码"
+					@keyup.enter="onLoginClick" />
 			</div>
 			<div class="loginbox-checkbox">
 				<span>
 					<!-- <input id="sfjzzh" type="checkbox" title="记住账号" :checked="loginForm.remember" @click="remeberPerson"
 						@keyup.enter="onLoginClick" /> -->
-					<el-switch change="remeberPerson" @keyup.enter="onLoginClick" width="40rem" size="default" v-model="loginForm.remember"></el-switch>
+					<el-switch change="remeberPerson" @keyup.enter="onLoginClick" width="40rem" size="default"
+						v-model="loginForm.remember"></el-switch>
 					记住账号密码
 				</span>
 			</div>
@@ -113,9 +116,9 @@
 				}).then(res => {
 					//存储用户ID
 					let _this = this
-					console.log(res)
+
 					store.roleId = res.data[0].roleid
-					console.log(store.roleId)
+
 					if (
 						window.navigator.userAgent.match(
 							/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
@@ -125,11 +128,31 @@
 					} else {
 						store.userport = 'PC'
 					}
-					//跳转到Main3D页面			
-					this.$router.replace({
-						path: '/home'
+					
+
+				}).then(result => {
+					let password = this.$md5(this.loginForm.password)
+					this.$http.post('/admin/base/open/login', {
+						username:this.loginForm.username,
+						password:this.loginForm.password
+					}).then(res => {
+						console.log('token信息',res.data.token)
+						store.token = res.data.token//保存token
+						let time = Number(res.data.expire) * 1000//token过期时间
+						console.log('时间',time)
+						//跳转到Main3D页面
+						this.$router.replace({
+							path: '/home'
+						})
+						
+						setTimeout(res=>{
+							ElMessage.warning('token过期,请重新登录!');
+							store.token = ''
+							this.$router.replace({
+								path: '/login'
+							})
+						},10000)
 					})
-
 				})
 
 				let userInfo = {