• Vue.js框架:超出配置登出时间就会退出登陆(前端设置)


    1、login.vue

         在登陆时候记下点击登陆的时间;

    sessionStorage.setItem("lastClickTime", new Date().getTime());
       methods:{
          login(){
               this.$api.commn.login(this.loginForm.username, this.loginForm.password).then((result) => {   
                 let res = result.data;
                 let token = "Bearer " + res.token;
                 this.$storage.token.set(token);
                 this.$storage.user.set(res);
                 //记录点击时间
                 sessionStorage.setItem("lastClickTime", new Date().getTime());
              })
              .catch((error) => {
                console.log("error");
              });
           }
       }

    2、home.vue

      代码精简了,html只剩下左边菜单栏,展示定时器写在哪个页面,各个项目不同,对应的不一定是home.vue,函数只写了定时器的,仅供参考;

      1. data先定义timer

      2.钩子函数:methods里写定时器实现函数,created里捕获记录每次点击的时间,mounted里执行定时器,destroyed里销毁定时器。

    <template>
        <div class="sidebar" style="background-color: rgb(50, 65, 87)">
          <!--左侧菜单 start    *********************************************************************-->
          <el-menu
            class="sidebar-el-menu"
            :collapse="collapse"
            router=""
            :default-active="onRoutes">
            <template v-for="menu in menus">
              <template v-if="menu.subs && menu.subs.length > 0">
                <el-submenu :index="menu.id + ''">
                  <template slot="title">
                    <i :class="menu.icon"></i>
                    <span>{{ $t(menu.name) }}</span>
                  </template>
                </el-submenu>
              </template>
          </el-menu>
          <!--左侧菜单 end    *********************************************************************-->
        </div>
        <div class="content-box" :class="{ 'content-collapse': collapse }">
          <v-tags></v-tags>
          <!--内容 start    *********************************************************************-->
          <!--内容 end    *********************************************************************-->
        </div>
    </template>
    
    <script>
    export default {
      name: "home",
      data() {
        return {
          timer: null,
        };
      },
    
      methods: {
    
        isTimeOut() {
          // 使⽤定时器之前,要清除⼀下定时器
          clearInterval(this.timer);
         // 定时器
          this.timer = setInterval(() => { 
            let times = 10 * 60 * 1000;//配置的是10min 
            let lastClickTime = sessionStorage.getItem("lastClickTime") * 1; // 把上次点击时候的字符串时间转换成数字时间
            let nowTime = new Date().getTime(); // 获取当前时间
            // 当前时间减去上次点击时间超出配置的登出时间,就提⽰登录退出
            if (nowTime - lastClickTime > times) {
              // 提⽰⼀下⽤户
              this.$message({ type: "warning", message: "超时了,已退出登录" });
              // 这⾥要清除定时器,结束任务
              clearInterval(this.timer);
              // 最后返回到登录页
              this.$router.push({ path: "/login" });
            }
          }, 1000);
        },
      },
      mounted() {
        //在这执行定时器
         this.isTimeOut()
      },
      created() {
        window.addEventListener("click",() => {
            // 为了⽅便,我们把点击事件的时间直接存到sessionStorage中去,这样⽅便获取⽐较
            sessionStorage.setItem("lastClickTime", new Date().getTime());
          },
          //true 捕获点击事件
          true
        );
      },
      destroyed: function () {
         clearInterval(this.timer);
         window.removeEventListener("click", () => {}, true);
      },
    };
    </script>
  • 相关阅读:
    文件的权限
    Linux正则表达式
    Linux中硬链接与软链接
    Linux下文件属性介绍
    JavaScript核心之语法
    JavaScript概述
    浏览器播放wav语音文件,tomcat异常,ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
    JS 数据结构-Set 集合 创建Set 常用Set方法
    JSON.parse 方法解析纯数字键值对报错的解决方法
    前端常用框架
  • 原文地址:https://www.cnblogs.com/ElvisZhongShao/p/16385286.html
Copyright © 2020-2023  润新知