iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue页面锁屏的完美解决方法记录
  • 592
分享到

vue页面锁屏的完美解决方法记录

2024-04-02 19:04:59 592人浏览 泡泡鱼
摘要

目录Vue实现页面锁屏完美解决1.禁止浏览器返回按钮2.书写锁屏页面和相关路由3.在router.beforeEach()路由首首位加上以下代码4.实现退出锁屏重新登录总结vue实现

vue实现页面锁屏完美解决

最新写项目 客户要求写一个锁屏功能。静下心来,慢慢看 ,相信你会有收获的。

功能点

1.禁止浏览器返回按钮。

2.手动输入路由会强制跳到锁屏页面。

3.必须输入正确密码或者重新登录该系统。

思路:锁屏的思路从 登录开始在登录的时候 拿到密码 使用md5对密码加密, 然后存到vuex或者浏览器本地存储,然后新建锁屏页面,如下图。 在锁屏页面 输入密码 对锁屏页面输入的密码进行MD5加密,加密后把登录的时候存到本地存储的密码对比 。两个密码一样的话就成功了可以跳到首页,反之则密码错误,仍然在锁屏页面。

上面图片为对登录的密码进行md5加密

附:md5加密方法

安装插件 js-md5

npm install js-md5 -S

使用

一、全局挂载

第一步在main.js中引入md5,并挂载到vue的原型上

import md5 from 'js-md5'
Vue.prototype.$md5 = md5

第二步使用

this.$md5('这里是需要进行md5加密的内容')

二 、局部,某个页面使用

直接在js中引入md5,直接使用即可

import md5 from 'js-md5'
console.log(md5('这里是需要进行md5加密的内容'))

 

 <div class="right-menu-item" style="cursor: pointer"  @click="lockScreen">
          <i class="el-icon-lock" style="font-weight:700;"></i>
        </div>
	  // 锁屏:
    lockScreen() {
      this.$router.push('/screen')
    },

上面的代码就是点击锁屏按钮 跳转路由 到锁屏页面。

1.禁止浏览器返回按钮

在main.js里面加上下面的代码

	//禁止浏览器上一步下一步
window.addEventListener('popstate', function() {
  history.pushState(null, null, document.URL)
 })

在 router/index.js里面加上 scrollBehavior: () => {
history.pushState(null, null, document.URL)
}这个代码

export default new Router({
  mode: 'history', // 去掉url中的#
  // scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes,
  scrollBehavior: () => {
    history.pushState(null, null, document.URL)
  }
})

2.书写锁屏页面和相关路由

下面代码为screen/index.js 为锁屏的页面 首先进入这个页面 默认执行一次 unlock方法里面的localStorage.setItem(“newlockPassWord”, md5(this.userFORM.newPw));

把解锁的密码存到本都对象存储里面,这样路由就好做处理。

	<template>
  <div class="app">
    <el-form class="userInfo">
      <div class="body-icon">
      </div>
      <div class="title-icon">
      </div>
      <div class="box">
        <img src="../../assets/loGo/logo.png" class="lock-avatar" />
      </div>
      <el-form-item>
        <el-row style="margin-left: 100px">
          <el-col :span="2">
          </el-col>
          <el-col :span="12" class="lock-nickName">{{ nickName }}</el-col>
        </el-row>
      </el-form-item>
      <el-form-item>
        <el-input
          v-model="userForm.newPw"
          placeholder="请输入登陆密码"
          type="password"
          auto-complete="off"
          @keyup.enter.native="unLock()"
          show-password
        >
          <div slot="prefix" style="margin-left: 3px">
            <i class="el-icon-lock"></i></div
        ></el-input>
      </el-form-item>
      <el-form-item>
        <div style="text-align: center; color: #1890ff">
          <a @click="logout">退屏重新登录</a>
        </div>
      </el-form-item>
      <el-form-item>
        <el-button
          :loading="loading"
          size="medium"
          type="primary"
          style="width: 100%"
          @click="unLock"
          ><i class="el-icon-unlock"></i>解锁</el-button
        >
        <!-- <el-button
          circle
          type="primary"
          plain
          icon="el-icon-unlock"
          @click="unLock"
        ></el-button> -->
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
import md5 from "js-md5";
export default {
  data() {
    return {
      userForm: {
        newPw: "",
        user: "",
      },
      loading: false,
    };
  },
  methods: {
    unLock() {
      let oldAuct = localStorage.getItem("lockPassword");
      localStorage.setItem("newlockPassword", md5(this.userForm.newPw));
      console.log(oldAuct, localStorage.getItem("newlockPassword"), "999990");
      if (this.userForm.newPw === "" || this.userForm.newPw === undefined) {
        return;
      } else if (md5(this.userForm.newPw) != oldAuct) {
        this.userForm.newPw = "";
        this.$notify.error({
          title: "错误",
          message: "解锁密码错误,请输入登陆密码解锁",
          duration: 1500,
        });
        return;
      } else {
        setTimeout(() => {
          this.$notify.success({
            title: "解锁成功",
            duration: 1500,
          });
          this.$router.push("/index");
          this.userForm.newPw = "";
        }, 500);
      }
    },
    async logout() {
      this.$confirm("确定注销并退出系统吗?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        let password = localStorage.getItem("lockPassword");
        localStorage.setItem("newlockPassword", password);
        this.$store.dispatch("LogOut").then(() => {
          location.href = "/login";
        });
      });
    },
  },
  mounted() {
    this.unLock();
  },
};
</script>

<style lang="sCSS" scoped>
.app {
  // background-image: url("../../assets/images/back.png");
  background-size: 100%; // 背景图片大小最大
  height: 100%; //宽、高也最大
  width: 100%;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-position: center;
  background-color: skyblue; //一定要设置背景颜色
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: auto;
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1500;
  .userInfo {
    // display: flex;
    background: #ffffff;
    // height: 300px;
    width: 400px;
    padding: 25px 25px 5px 25px;
    .title-icon {
      width: 120px;
      height: 20px;
      margin-bottom: 22px;
    }
    .body-icon {
      width: 500px;
      height: 120px;
      position: absolute;
      margin-left: -152px;
      margin-top: -166px;
    }
    .box {
      display: flex;
      justify-content: center;
      align-items: center;
      .lock-avatar {
        width: 100px;
        height: 100px;
        border-radius: 100px;
      
      }
    }

    .lock-nickName {
      margin-top: -2px;
      font-size: 14px;
      font-weight: 560;
      text-align: center;
    }
    .el-input {
      height: 38px;
      input {
        height: 38px;
      }
    }
  }
}
</style>

下面图片为router/index.js 新增 锁屏路由

3.在router.beforeEach()路由首首位加上以下代码

下面的代码意思是对开始登录的MD5加密密码锁屏页面的MD5密码 不相等 并且 将要去的路由不是screen 则直接跳到 screen这个页面。

这样的话 只要点击锁屏按钮进入 screen锁屏页面 返回禁止了,路由里面输入路由也不会生效。

	 
	 //登录的时候存的md5加密的密码
  let oldPasswordld = localStorage.getItem("lockPassword");
  //锁屏页面的md5加密密码
  let newlockPassword = localStorage.getItem("newlockPassword");
  console.log(oldPasswordld,newlockPassword)
	if (newlockPassword !== oldPasswordld && to.path !== '/screen') {
    next('/screen')
	}

4.实现退出锁屏重新登录

下面代码在screen/index.js里面 退出锁屏重新登录

let password = localStorage.getItem(“lockPassword”);
localStorage.setItem(“newlockPassword”, password);

注意:退出锁屏的时候需要 把本地的首次登录的密码 赋值给锁屏界面的密码 否则退出不了 锁屏页面。

 <el-form-item>
        <div style="text-align: center; color: #1890ff">
          <a @click="logout">退屏重新登录</a>
        </div>
      </el-form-item>
	 async logout() {
      this.$confirm("确定注销并退出系统吗?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
      //退出锁屏的时候需要 把本地的首次登录的密码 赋值给锁屏界面的密码 否则退出不了 锁屏页面。然后调用vuex退出方法
        let password = localStorage.getItem("lockPassword");
        localStorage.setItem("newlockPassword", password);
        this.$store.dispatch("LogOut").then(() => {
          location.href = "/login";
        });
      });
    },

总结

到此这篇关于vue页面锁屏完美解决的文章就介绍到这了,更多相关vue页面锁屏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue页面锁屏的完美解决方法记录

本文链接: https://www.lsjlt.com/news/150661.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue页面锁屏的完美解决方法记录
    目录vue实现页面锁屏完美解决1.禁止浏览器返回按钮2.书写锁屏页面和相关路由3.在router.beforeEach()路由首首位加上以下代码4.实现退出锁屏重新登录总结vue实现...
    99+
    2024-04-02
  • vue页面锁屏如何解决
    这篇文章主要讲解了“vue页面锁屏如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue页面锁屏如何解决”吧!vue实现页面锁屏完美解决最新写项目 客户要求写一个锁屏功能。静下心来,慢...
    99+
    2023-07-01
  • oracle表被锁定的完美解决方法
    解决办法: ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在...
    99+
    2024-04-02
  • Oracle锁表解决方法的详细记录
    目录前言解决方法如下:总结前言 锁表或锁超时相信大家都不陌生,经常发生在DML语句中,产生的原因就是数据库的独占式封锁机制,当执行DML语句时对表或行数据进行锁住,直到事务提交或回滚...
    99+
    2024-04-02
  • vue页面设置滚动失败的完美解决方案(scrollTop一直为0)
    目录vue页面设置滚动失败的解决方案(scrollTop一直为0)背景误区:什么时候存在滚动条?Why scrollTop==0如何判断页面的滚动条是哪个div产生的?vue页面设置...
    99+
    2023-05-20
    vue页面滚动失败 vue页面滚动
  • 记录安装Anaconda遇到的坑:failed to create menu.解决办法(完美解决)
    Anaconda和Miniconda Anaconda是一个完整的环境,它内置了很多Python常用的库和相关依赖环境,安装包体积和安装后在电脑所占用的空间都较大。为什么有两个Conda?其实两个Conda的用处都是一样的,都是用来创建虚...
    99+
    2023-09-14
    python 深度学习 Powered by 金山文档
  • Vue路由回退的完美解决方案(vue-route-manager)
    目录路由管理器背景入门解决问题Methods总结路由管理器 记录每次跳转的vue-route name, 内置了一些处理回退的方法, 方便回退到指定页面 背景 笔者所开发的项目中...
    99+
    2024-04-02
  • phpmyadmin不显示登录页面的解决方法
    这篇文章将为大家详细讲解有关phpmyadmin不显示登录页面的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。phpmyadmin不显示登录页面解决方法:我们需要...
    99+
    2024-04-02
  • 解决vue页面刷新产生白屏的问题
    目录vue页面刷新产生白屏vue页面白屏的原因及优化一、原因二、解决办法vue页面刷新产生白屏 app.vue <template>   <div id="app"...
    99+
    2024-04-02
  • Virtualbox6.1.34出现Endkernelpanic-notsyncing:attemptedtokilltheidletask的完美解决方法
    目录❤️‍ 前言❤️‍ 问题分析❤️‍ 解决方案❤️‍ 前言 下午的时候,有一位小伙伴突然找到我,说是虚拟机在安装 Ubuntu 的时候,出现了 &l...
    99+
    2022-11-13
    Virtualbox kernel panic - not syncing Virtualbox kernel panic
  • Ajax跨域查询的完美解决方法
    本篇内容介绍了“Ajax跨域查询的完美解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • IDEA找不到Database的完美解决方法
    目录第一步:在idea中找到View->Tool Windows第二步:找到File->Settings第三步:找到plugins,然后在marketplace输入data,找到database naviga...
    99+
    2023-05-12
    idea找不到database idea没有database选项 idea找不到database选项
  • PHP登录页面跳转问题解决方法
    在Web开发中,登录页面跳转是一个常见的问题,特别是在使用PHP来实现用户登录功能时。在用户输入用户名和密码后,成功登录后应该跳转到另一个页面,例如用户的个人主页。在本文中,我们将讨论...
    99+
    2024-03-15
    php 登录 跳转
  • 笔记本电脑显示屏黑屏的解决方法
    这篇文章主要介绍了笔记本电脑显示屏黑屏的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、软件问题有时候在安装了一些软件或者硬件驱动以后,发现重新启动后,电脑进不了系...
    99+
    2023-06-27
  • 体验网站日志记录在win2003中的完美配置方法
    所谓的网站日志,其实就是服务器日志,是用来记录web服务器的一些操作,通过网站日志我们可以很清楚的了解用户的来访方式。那么在win2003系统中,我们要如何通过IIS6.0来配置网站日志记录呢?下面就来看一下高手是如何来...
    99+
    2023-05-19
    体验网站日志 win2003配置
  • 解决cuda突然不能用了的方法[完美解决]
    一、问题描述 之前配置过一个pytoch的虚拟环境,并且调用cuda也可用,但是在做项目的时候,想下载一些工具包,下载时出现了一些问题,上网解决时候告诉我利用conda update all更新conda即可,于是我更新了,至此之后我的cu...
    99+
    2023-10-25
    python conda pip pytorch 深度学习
  • 笔记本电脑蓝屏的解决方法
    这篇文章给大家分享的是有关笔记本电脑蓝屏的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原因一:安装软件/补丁与系统不兼容当电脑上如果安装了新的软件或者补丁之后,发生电脑蓝屏的话,就证明是因为新安装的软件...
    99+
    2023-06-27
  • Java连接SqlServer错误的完美解决方法
    目录前言问题发现开始解决解决方法方法一方法二总结前言 最近公司换了新项目,这边也是进入了新一轮的开发,当项目经理把需求发给我之后我开始了需求的分析和coding。不一会我便开始拉去代...
    99+
    2023-05-14
    java连接sqlserver失败 java 连接sql server java连接sqlserver数据库失败
  • vue第一次获取不到元素的解决方法记录
    前言 vue中第一次获取不到元素的解决办法,是否经常第一次点击弹窗按钮,获取弹窗中的元素。打开弹窗获取元素为空,要第二次才能获取。 一、更新dom后获取 this.$nextTi...
    99+
    2024-04-02
  • Vue首页加载白屏原因及解决方法是什么
    本篇内容主要讲解“Vue首页加载白屏原因及解决方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue首页加载白屏原因及解决方法是什么”吧!首先说一下首页加载为什么会白屏?先说下Spa单页...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作