小程序7天自動退出

7天自動退出的場景:
1、7天沒有點擊按鈕,
2、7天沒有請求服務器


解決思路:
1、登錄成功,記錄當前登錄時間,並存在緩存中,
2、登錄狀態下,點擊按鈕和請求服務器時,
    a 先判斷當前時間和登錄時間差是否大於7天,
    a.1 大於,則清空用戶登錄緩存信息,提示用戶登錄,
    a.2 不大於,則把當前時間作爲新的登錄時間


源碼:

1、在common.js中統一存、取、清登錄時間緩存

const common = {
  // 設置用戶登錄時間
  setLogintimeInfo: function (time) {
  	uni.setStorageSync('loginTime', time);
  },
  getLogintimeInfo: function () {
  	return uni.getStorageSync('loginTime');
  },
  removeLogintimeInfo: function () {
  	uni.removeStorageSync('loginTime');
  },
}

export default common;

2、在login.vue頁面登錄成功時,存當前時間

// 記錄登錄成功時間戳
let timestamp = new Date().getTime();
common.setLogintimeInfo(timestamp);

3、在request.js文件中實現7天自動退出方法

// 7天未登錄,自動退出
function autoLogoutFor7Days(){
  let loginstamp=common.getLogintimeInfo();
  let currentstamp = new Date().getTime();
  if(currentstamp-loginstamp>7*24*60*60*1000){//7天內未請求
    // 1 清除用戶登錄信息
    common.removeGlobalUserInfo();
    common.removeLogintimeInfo();
    common.removeStorage('location');
    // 2 提示去登錄,跳轉到登錄界面
    uni.showModal({
      content: '您7天內未登錄,請重新登錄',
      confirmText: '去登錄',
      showCancel:false,
      success(res) {
        uni.navigateTo({
          url:"/pages/login/login",
        });
      }
    });
    return true;
  }else{//7天內請求了,重置請求時間戳
    common.setLogintimeInfo(currentstamp);
    return false;
   }
}

4、點擊按鈕時,實現7天退出的判斷

function pageNavigator(isUrl, noUrl) {
	if (noUrl === undefined) noUrl = ''
	if (common.isLogin()) { //用戶名存在
    // 查看登錄狀態下,7天內未請求,自動退出
    if(autoLogoutFor7Days()){
      return
    }else{
      uni.navigateTo({
      	url: '/pages/' + isUrl
      })
    }
	} else { //用戶名不存在,傳遞過去登錄之後返回界面的url
      uni.navigateTo({
        url: '/pages/login/login?navUrl=' + noUrl
      })
	}
}

5、請求服務器時,實現7天退出的判斷

function setRequest(url, data, showLoad = true, method = 'post', header = {}) {
  // 7天內未請求,自動退出排除一些不需要登錄就可以請求的接口
  if(url.indexOf("getParkInfo")==-1&&url.indexOf("indexSlideShow")==-1){
    autoLogoutFor7Days();
  }

  uni.request({
	...
  })
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章