VUE中30分钟无操作返回登录页

本文介绍了如何在Vue.js应用程序中实现一个功能,即如果用户在30分钟内没有任何操作,系统将自动重定向到登录页面,以增强应用的安全性和用户体验。通过结合使用Vue的生命周期钩子和定时器,我们可以轻松实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
  <div id="app" @click="handleTime">
    <router-view></router-view>
  </div>
</template>

<script>
  import {megError, megSuc} from "@/utils/notice";
  
  export default {
    name: 'APP',
    data() {
      return {
        timmer: null,
        lastTime: null
      }
    },
    methods: {
      handleTime() {
        const curTime = new Date();
        if (curTime - this.lastTime > 1000 * 60 * 30) {
          //退出
          
          if (this.$route.path == '/login') {
            return
          }
          megError('登录超时,将返回登录页');
          setTimeout(() => {
            this.$store.dispatch('FedLogOut').then(() => {
              this.$router.push({path: '/login'})
              location.reload()
            })
          }, 2000)
          
        } else {
          this.lastTime = curTime;
     
### Vue.js 中捕获页面返回事件 在 Vue.js 应用程序中监听浏览器的回退或前进导航行为可以通过 `beforeunload` 或者 `popstate` 事件来实现。对于单页应用 (SPA),Vue Router 提供了更优雅的方式来处理路由变化时的操作。 当需要监听页面回退或者返回动作时,可以利用 JavaScript 的原生 `window.addEventListener(&#39;popstate&#39;, callback)` 方法,在回调函数里执行自定义逻辑[^1]。另外一种方式是在使用 Vue Router 的情况下通过全局前置守卫、组件内的导航守卫等机制拦截并响应这些操作。 如果希望阻止用户的离开确认对话框,则应该注册 `beforeunload` 事件处理器;而只是想单纯地知道用户触发了历史记录更改(即点击了后退/前进按钮),那么就应当采用 `popstate` 事件[^2]。 ```javascript // 使用 popstate 监听浏览器的历史栈改变 window.addEventListener(&#39;popstate&#39;, function(event) { console.log(&#39;The back button was probably pressed.&#39;); }); // 如果想要取消监听器可以在适当时候调用 removeEventListener function cleanup() { window.removeEventListener(&#39;popstate&#39;, handler); } ``` 对于基于 Vue Router 构建的应用来说,还可以借助于 router 对象提供的钩子来进行更加细粒度控制: ```javascript const router = new VueRouter({ routes: [ // 路由配置... ] }) router.beforeEach((to, from, next) => { // 这里的逻辑会在每次路由跳转前被调用 const answer = window.confirm(&#39;Do you really want to leave? You have unsaved changes!&#39;) if (!answer) return false; next(); }) ``` 上述代码展示了如何设置一个全局前置守卫用于询问用户是否真的要离开当前页面[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值