|
@@ -14,7 +14,10 @@ export const useUserStore = defineStore('user', () => {
|
|
|
const avatar = ref('');
|
|
|
const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
|
|
|
const permissions = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
|
|
|
-
|
|
|
+ // 空闲超时时间
|
|
|
+ const idleTimeout = ref<number>(15 * 60 * 1000);
|
|
|
+ // 最后操作时间
|
|
|
+ const lastRequestTime = ref<number>();
|
|
|
/**
|
|
|
* 登录
|
|
|
* @param userInfo
|
|
@@ -100,7 +103,32 @@ export const useUserStore = defineStore('user', () => {
|
|
|
}
|
|
|
return Promise.reject(err);
|
|
|
};
|
|
|
-
|
|
|
+ let interval;
|
|
|
+ const setTimeoutInterval = () => {
|
|
|
+ if (!!interval) {
|
|
|
+ toClearInterval();
|
|
|
+ }
|
|
|
+ lastRequestTime.value = new Date().getTime();
|
|
|
+ interval = setInterval(() => {
|
|
|
+ const currentTime = new Date().getTime();
|
|
|
+ if (currentTime - lastRequestTime.value > idleTimeout.value) {
|
|
|
+ toClearInterval();
|
|
|
+ alert('登录超时,请重新登录');
|
|
|
+ logout().then(() => {
|
|
|
+ location.href = import.meta.env.VITE_APP_CONTEXT_PATH + '#' + 'index';
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, 5000);
|
|
|
+ };
|
|
|
+ const updateLastRequestTime = () => {
|
|
|
+ lastRequestTime.value = new Date().getTime();
|
|
|
+ };
|
|
|
+ const toClearInterval = () => {
|
|
|
+ if (interval) {
|
|
|
+ clearInterval(interval);
|
|
|
+ interval = null;
|
|
|
+ }
|
|
|
+ };
|
|
|
return {
|
|
|
userId,
|
|
|
tenantId,
|
|
@@ -114,7 +142,9 @@ export const useUserStore = defineStore('user', () => {
|
|
|
getInfo,
|
|
|
logout,
|
|
|
setAvatar,
|
|
|
- loginWithUsbkey
|
|
|
+ loginWithUsbkey,
|
|
|
+ setTimeoutInterval,
|
|
|
+ updateLastRequestTime
|
|
|
};
|
|
|
});
|
|
|
|