16. Vue-element-template记住密码

news2024/11/26 21:17:51

Vue-element-template 记住密码

1. 在登录页面添加记住密码按钮

  1. 新增参数 rememberMe

    # resources/src/views/login/index.vue
    			loginForm: {
            username: 'admin',
            password: '123456',
            rememberMe: false
          },
    
  2. 添加复选框

    # resources/src/views/login/index.vue
    		<div style="margin-bottom: 20px;">
            <el-checkbox v-model="loginForm.rememberMe">
              <span style="color: #fff; font-size: 12px;"> 记住我 </span>
            </el-checkbox>
          </div>
    
  3. 提交参数

    # resources/src/views/login/index.vue
    		handleLogin() {
          …………
          不用改
        }
    

2. 在 user module 里改造login方法

  1. 获取 rememberMe 参数, 传给 setToken 方法

    # resources/src/store/modules/user.js
      login({ commit }, userInfo) {
        const { username, password, rememberMe } = userInfo
        return new Promise((resolve, reject) => {
          login({ username: username.trim(), password: password }).then(response => {
            const { data } = response
            commit('SET_TOKEN', data.token)
            setToken(data.token, rememberMe)
            resolve()
          }).catch(error => {
            reject(error)
          })
        })
      },
    
  2. 修改setToken方法, 保存到localStorage

    #resources/src/utils/auth.js
    
    export function setToken(token, persistent = false) {
      if (persistent) {
        Cookies.set(TokenKey, token);
        return localStorageSetItem(TokenKey, token)
      } else {
        return Cookies.set(TokenKey, token)
      }
    }
    
    export function localStorageSetItem(key, value) {
      const curTime = new Date().getTime()
      localStorage.setItem(key, JSON.stringify({data: value, time: curTime}))
    }
    
  3. 修改 getToken 和 removeToken

    #resources/src/utils/auth.js
    const TokenKey = 'AUTH-TOKEN';
    const EXP = 30;
    
    export function getToken() {
      let token = Cookies.get(TokenKey)
      if (!token) {
        token = localStorageGetItem(TokenKey, EXP)
      }
      return token
    }
    
    export function removeToken() {
      localStorageRemoveItem(TokenKey)
      return Cookies.remove(TokenKey)
    }
    
    export function localStorageGetItem(key, exp) {
      const data = localStorage.getItem(key)
      const dataObj = JSON.parse(data)
      if (dataObj === null || new Date().getTime() - dataObj.time > exp * 864e+5) {
        return null
      } else {
        return dataObj.data
      }
    }
    
    export function localStorageRemoveItem(key) {
      localStorage.removeItem(key)
    }
    

3. 测试

➜  Genes-Admin git:(ogenes) ✗ npm run watch

image-20220901102914341

image-20220901102937796

4. 定义相关文案的翻译,修改默认文案

#resources/src/i18n/langs/en/login.js
#resources/src/i18n/langs/zh_CN/login.js
#resources/src/i18n/langs/zh_HK/login.js

之前已经翻译过
export const login = {
	……
  rememberMe: '記住我',
	……
}
#<span style="color: #000; font-size: 12px;"> 记住我 </span>
<span style="color: #000; font-size: 12px;"> {{ $t("loginForm.rememberMe") }} </span>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、STM32开发环境的搭建(Keil+STM32CubeMX)

1、STM32开发环境所需的东西 (1)KeilMDK安装包。 (2)STM32CubeMX。 (3)Keil软件对应的单片机pack包。 (4)STM32Cube MCU包。 2、Keil简介及安装 略 3、CubeMX简介及安装 3.1、CubeMX简介 (1)STM32CubeMX是一种图形工具&#xff0c;通过分步过程可以非常轻松地配置STM3…

盘点!Instruction Tuning 时代的大模型(下)

作者 | Kevin吴嘉文 整理 | NewBeeNLP 公众号 https://zhuanlan.zhihu.com/p/617302168 Alpaca&#xff0c;ChatGLM 6B 等模型的效果可以接受&#xff0c;下文总结部分笔记&#xff0c;为训练自定义小型化&#xff08;7B&#xff09;模型提供点知识储备。 之前我们分享了LaM…

Spring Boot 整合 分布式搜索引擎 Elastic Search 实现 我附近的、酒店竞排

文章目录 ⛄引言一、我附近的酒店⛅需求分析⚡源码编写 二、酒店竞价排名⌚需求分析⏰修改搜索业务 ✅效果图⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中…

Maven安装与配置(图解)

Maven是一个基于 Java 的项目管理工具&#xff0c;因此最基本的要求是在计算机上安装 JDK。 Maven 对系统要求如下表&#xff1a; JDKJDK 7.0 及以上。内存没有最低要求。磁盘空间Maven 安装本身大约需要 10MB。除此之外&#xff0c;其他磁盘空间将用于本地 Maven 存储库。本地…

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-优化更新子节点

1. 前言 在上一篇文章中&#xff0c;我们介绍了当新的VNode与旧的oldVNode都是元素节点并且都包含子节点时&#xff0c;Vue对子节点是 先外层循环newChildren数组&#xff0c;再内层循环oldChildren数组&#xff0c;每循环外层newChildren数组里的一个子节点&#xff0c;就去…

《HelloGitHub》第 86 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

华为OD机试真题B卷 Java 实现【旋转数组的最小数字】,附详细解题思路

一、题目描述 有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。 二、输入描述 3,4,5,1,2 …

MyBatis缓存和二级缓存整合Redis

MyBatis缓存和二级缓存整合Redis ⼀级缓存缓存验证在⼀个sqlSession中&#xff0c;对user表根据username进⾏两次查询&#xff0c;查看他们发出sql语句的情况同样是对user表进⾏两次查询&#xff0c;只不过两次查询之间进⾏了⼀次update操作。总结 ⼀级缓存原理探究与源码分析 …

安装 Nginx 修改默认端口

用远程工具连接我们上次购买的机器&#xff0c;这里我要介绍一个知识点&#xff0c;博主使用的工具是 MobaXterm&#xff0c;这个工具有一个多操作的功能&#xff0c;在下图的位置可以开启多操作&#xff0c;然后连接你的服务器机子即可&#xff1a; 首先我们将机子里面的依赖源…

【JavaSE】Java基础语法(三十四):实现多线程

文章目录 1. 简单了解多线程2. 并发和并行3. 进程和线程4. 实现多线程方式一&#xff1a;继承Thread类【应用】5. 实现多线程方式二&#xff1a;实现Runnable接口【应用】6. 实现多线程方式三: 实现Callable接口【应用】7. 设置和获取线程名称【应用】8. 线程休眠【应用】9. 线…

[PyTorch][chapter 36][经典卷积神经网络-1 ]

前言&#xff1a; ILSVRC&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一&#xff0c;代表了图像领域的最高水平。 ImageNet数据集是ILSVRC竞赛使用的是数据集&#xff0c;由斯坦福大学李…

多线程屏障CyclicBarrier

文章目录 前言一、CyclicBarrier可以做什么&#xff1f;二、使用步骤1 单参数CyclicBarrier2 多参数 CyclicBarrier3 与CyclicBarrier类似的Exchanger 总结 前言 多线程中的CyclicBarrier,同样也是juc包下的一个工具类; 一、CyclicBarrier可以做什么&#xff1f; CyclicBarri…

C#,码海拾贝(28)——求解“对称正定方程组”的“平方根法”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

【译】Google Guava 的 Table 接口介绍

原文&#xff1a;https://www.baeldung.com/guava-table 1. 概述 在本教程中&#xff0c;我们将展示如何使用 Google Guava 的 Table 接口及其多个实现。 Guava 的 Table 是一种集合&#xff0c;表示包含行、列和相关单元格值的表结构&#xff0c;行和列充当有序的键对。 2…

React Native开发速记

文章目录 引子React Native适用场景React基础JSX 组件的定义基础APIFlex弹性布局例子: Flex布局实现多行多列 常用UI组件几个核心钩子函数useState用法useEffect典型用法 和原生模块交互调用原生模块方法 调试其它工具UI框架参考资源 引子 软件开发&#xff0c;移动优先&#…

webAJAX概述.

1.1什么是AJAX. Ajax即AsynchronousJavascript And XML&#xff1a;异步数据回调。 使用Ajax技术网页应用能够快速地将更新呈现在用户界面上&#xff0c;不需要重载&#xff08;刷新&#xff09;整个页面【只刷新局部】&#xff0c;这使得程序能够更快地回应用户的操作。、 1…

使用Node. js输出到命令行

目录 1、使用控制台模块的基本输出 2、清除控制台 3、计数元素 4、复位计数 5、打印堆栈跟踪 6、计算花费的时间 7、stdout和stderr 8、为输出着色 9、创建进度条 1、使用控制台模块的基本输出 Node.js提供了一个console模块&#xff0c;它提供了大量非常有用的与命令…

Qt Quick系列(4)—定位元素

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 前言相对布局代码示例示例一示例二示例三示例四示例五示例六 简单"布局器"ColumnRowGridFlow 结语 前言 在Qt Quick中&#xff0c;可以使用以下方式来定位元素&#xff1a;…

需要建立强大的网络响应框架

由于头条新闻充斥着网络攻击&#xff0c;因此企业制定网络响应框架变得前所未有的重要。当今的网络安全形势继续快速发展&#xff0c;黑客行动主义、民族国家支持的网络攻击、勒索软件和其他攻击策略变得更加危险、复杂&#xff0c;组织的防御成本也越来越高。随着企业进行数字…

华为OD机试真题B卷 Java 实现【名字的漂亮度】,附详细解题思路

一、题目描述 给出一个字符串&#xff0c;该字符串仅由小写字母组成&#xff0c;定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 每个字母都有一个“漂亮度”&#xff0c;范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。 给出多个…