diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java index a7d570a..72fdc7b 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java @@ -81,7 +81,7 @@ public class UserServiceImpl extends ServiceImpl implements Us public LoginVO refreshToken(String refreshToken) { //验证 token if (!JwtUtil.checkSign(refreshToken, jwtProperties.getRefreshTokenSecret())) { - throw new GlobalException("refreshToken无效或已过期"); + throw new GlobalException("您的登陆信息已过期,请重新登陆"); } String strJson = JwtUtil.getInfo(refreshToken); Long userId = JwtUtil.getUserId(refreshToken); diff --git a/im-uniapp/App.vue b/im-uniapp/App.vue index 1fc215b..9bf5c33 100644 --- a/im-uniapp/App.vue +++ b/im-uniapp/App.vue @@ -307,11 +307,24 @@ // this.audioTip.src = "/static/audio/tip.wav"; // this.audioTip.play(); }, - isExpired(loginInfo) { - if (!loginInfo || !loginInfo.expireTime) { - return true; - } - return loginInfo.expireTime < new Date().getTime(); + refreshToken(loginInfo) { + return new Promise((resolve, reject) => { + if (!loginInfo || !loginInfo.refreshToken) { + reject(); + } + http({ + url: '/refreshToken', + method: 'PUT', + header: { + refreshToken: loginInfo.refreshToken + } + }).then((newLoginInfo) => { + uni.setStorageSync("loginInfo", newLoginInfo) + resolve() + }).catch((e) => { + reject(e) + }) + }) }, reconnectWs() { // 已退出则不再重连 @@ -348,21 +361,21 @@ this.$mountStore(); // 登录状态校验 let loginInfo = uni.getStorageSync("loginInfo") - if (!this.isExpired(loginInfo)) { + this.refreshToken(loginInfo).then(() => { // 初始化 this.init(); // 跳转到聊天页面 uni.switchTab({ url: "/pages/chat/chat" }) - } else { + }).catch(() => { // 跳转到登录页 // #ifdef H5 uni.navigateTo({ url: "/pages/login/login" }) // #endif - } + }) } } diff --git a/im-uniapp/common/request.js b/im-uniapp/common/request.js index 4bdef2e..1360497 100644 --- a/im-uniapp/common/request.js +++ b/im-uniapp/common/request.js @@ -42,7 +42,6 @@ const request = (options) => { return; } let newInfo = res.data.data; - newInfo.expireTime = new Date().getTime() + newInfo.refreshTokenExpiresIn*1000; uni.setStorageSync("loginInfo", newInfo); requestList.forEach(cb => cb()); requestList = []; diff --git a/im-uniapp/pages/login/login.vue b/im-uniapp/pages/login/login.vue index ab4421f..5be5079 100644 --- a/im-uniapp/pages/login/login.vue +++ b/im-uniapp/pages/login/login.vue @@ -51,7 +51,6 @@ console.log("登录成功,自动跳转到聊天页面...") uni.setStorageSync("userName", this.loginForm.userName); uni.setStorageSync("password", this.loginForm.password); - loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn * 1000; uni.setStorageSync("loginInfo", loginInfo); // 调用App.vue的初始化方法 getApp().$vm.init() diff --git a/im-uniapp/pages/register/register.vue b/im-uniapp/pages/register/register.vue index bf2a4bd..3b3f01c 100644 --- a/im-uniapp/pages/register/register.vue +++ b/im-uniapp/pages/register/register.vue @@ -96,7 +96,6 @@ console.log("登录成功,自动跳转到聊天页面...") uni.setStorageSync("userName", loginForm.userName); uni.setStorageSync("password", loginForm.password); - loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn * 1000; uni.setStorageSync("loginInfo", loginInfo); // 调用App.vue的初始化方法 getApp().init() diff --git a/im-web/src/view/Home.vue b/im-web/src/view/Home.vue index 4288b35..0699390 100644 --- a/im-web/src/view/Home.vue +++ b/im-web/src/view/Home.vue @@ -178,7 +178,6 @@ }) }, insertPrivateMessage(friend, msg) { - let chatInfo = { type: 'PRIVATE', targetId: friend.id, @@ -238,7 +237,6 @@ }) }, insertGroupMessage(group, msg) { - let chatInfo = { type: 'GROUP', targetId: group.id, @@ -257,7 +255,6 @@ }, handleSystemMessage(msg){ // 用户被封禁 - if (msg.type == this.$enums.MESSAGE_TYPE.USER_BANNED) { this.$wsApi.close(3000); this.$alert("您的账号已被管理员封禁,原因:"+ msg.content, "账号被封禁", { @@ -287,7 +284,6 @@ audio.src = url; audio.play(); } - }, showSetting() { this.showSettingDialog = true;