Bläddra i källkod

feat(user): 保存登录状态
feat(request): 增加登录状态验证

HMY 1 år sedan
förälder
incheckning
1943a289a4
4 ändrade filer med 47 tillägg och 16 borttagningar
  1. 13 0
      api/login.js
  2. 10 3
      store/user.js
  3. 7 7
      utils/auth.js
  4. 17 6
      utils/request.js

+ 13 - 0
api/login.js

@@ -1,4 +1,5 @@
 import request from '@/utils/request.js'
+import config from '@/config'
 
 const preUrl = '/clientServices.do?iscrypt=1'
 
@@ -16,6 +17,18 @@ export function login(username, password) {
 		}
 	})
 }
+
+// 保存session
+export function reLogin(username, password) {
+	return uni.request({
+		  method: 'get',
+		  timeout: 10000,
+		  url: config.baseUrl + '/LoginSA.do?user='+username+'&pass='+password,
+		  header: config.header,
+		  dataType: 'json'
+		})
+}
+
 // 获取用户信息
 export function getInfo(useId) {
 	return request({

+ 10 - 3
store/user.js

@@ -10,8 +10,10 @@ import {
 	logout
 } from '@/api/login.js'
 import {
-	getUserInfo
+	getUserInfo,getSession,setSession
 } from '@/utils/auth'
+import { reLogin } from '@/api/login.js'
+
 
 export const useUserStore = defineStore('user', () => {
 	const user = ref(getUserInfo()) // 用户信息
@@ -25,7 +27,12 @@ export const useUserStore = defineStore('user', () => {
 				.then(res => {
 					useId.value = res.returnParams.useId // 设置staffId
 					user.value = res.returnParams
-					// setToken(res.token)
+					// setSession(res.session)
+					reLogin(username.trim(), password).then((res)=>{
+						if("ok"===res.data){
+							setSession(res.cookies[0].split("=")[1].split(";")[0]);
+						}	
+					})
 					resolve(res)
 				})
 				.catch(error => {
@@ -41,7 +48,7 @@ export const useUserStore = defineStore('user', () => {
 					const source = res.returnParams[roleIndex]
 					Object.keys(source).forEach(key => {
 						// 目标对象没有该属性或者该属性为 null,则赋值
-						if (!(key in user.value) || user.value[key] === null) {
+						if (!(key in user.value) || user.value[key] === null || user.value[key] === "") {
 							user.value[key] = source[key] === undefined ? user.value[key] : source[key];
 						}
 					});

+ 7 - 7
utils/auth.js

@@ -1,17 +1,17 @@
-const TokenKey = 'App-Token'
+const SessionKey = 'JSESSIONID'
 
-export function getToken() {
-  return uni.getStorageSync(TokenKey)
+export function getSession() {
+  return uni.getStorageSync(SessionKey)
 }
 
 export function getUserInfo() {
   return uni.getStorageSync('userInfo')
 }
 
-export function setToken(token) {
-  return uni.setStorageSync(TokenKey, token)
+export function setSession(session) {
+  return uni.setStorageSync(SessionKey, session)
 }
 
-export function removeToken() {
-  return uni.removeStorageSync(TokenKey)
+export function removeSession() {
+  return uni.removeStorageSync(SessionKey)
 }

+ 17 - 6
utils/request.js

@@ -1,19 +1,30 @@
 // import { useUserStore } from '@/store/user.js'
 import config from '@/config'
-import { getToken } from '@/utils/auth'
+import { getSession } from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 import { toast, showConfirm, tansParams } from '@/utils/common'
 
-let timeout = 10000
+let timeout = 100000
 const baseUrl = config.baseUrl
 
 const request = config => {
   // 是否需要设置 token
-  // const isToken = (config.headers || {}).isToken === false
+  const isSession = config.isSession === false
   config.header = config.header || {}
-  // if (getToken() && !isToken) {
-  //   config.header['Authorization'] = 'Bearer ' + getToken()
-  // }
+  if (isSession) {
+	if (getSession()) {
+		config.header['cookie'] = getSession()
+	} else {
+		showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
+		  // if (res.confirm) {
+		  // store.dispatch('LogOut').then(res => {
+		  //   uni.reLaunch({ url: '/pages/login' })
+		  // })
+		  // }
+		})
+		reject('无效的会话,或者会话已过期,请重新登录。')
+	}
+  }
   // get请求映射params参数
   if (config.params) {
     let url = config.url + '?' + tansParams(config.params)