JS 如何利用浏览器的 cookie 保存用户名

news2025/4/5 19:02:25

前言

浏览器的cookie可以用来存储一些少量的网站信息,比如登录的用户名,用于提高用户体验非常有帮助

有的一些网站在第一次登录后,在指定的时间范围内容,下次在打开网站,再次登录时,不用每次都重新输入用户名的

或在做一些购物车效果时,也可以使用cookie,保持一个状态持续多长时间的

具体示例代码

代码如下所示,以Vue为示例

<template><div class="wrap"><div class="content"><el-form ref="form" :model="form" label-width="100px"><el-form-item label="用戶名"><el-input v-model="form.name" class="input" clearable></el-input></el-form-item><el-form-item label="密码"><el-input type="password" class="input" v-model="form.pass" clearable></el-input></el-form-item><el-form-item label="记住用户名"><el-radio-group v-model="form.date" size="mini" @change="handleCheck" class="el-radio-group"><el-radio :label="3" border>保存3天</el-radio><el-radio :label="7" border>保存7天</el-radio><el-radio :label="10" border>保存10天</el-radio><el-radio :label="30" border>保存30天</el-radio></el-radio-group></el-form-item><el-form-item class="login"><el-button type="primary" @click="onLogin">登录</el-button></el-form-item></el-form></div></div>
</template>

<script> export default {data() {return { form: {name: '',pass: '',date: 7,}}},mounted() {this.getCookie('username');console.log(this.form.name);},methods: {handleCheck(val) {console.log(val);this.form.date = val;// 多少天以后失效,这里默认设置的是7天,需要转化成时间戳秒},// 设置cookie,包括key名,value,值,过期时间expiredayssetCookie(user,val,expiredays) {// 把用户名保存进cookie里面document.cookie = `${user}=${val}`var exdate = new Date(); // 当前时间exdate.setTime(exdate.getDate() + expiredays*24*3600*1000);// 设置时间,多少天失效// 设置为新的值document.cookie += `;'expires='${exdate.toGMTString()}`; // 根据格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果 console.log(document.cookie)  },  getCookie() { // 提取当前的cookie let c = document.cookie; // 提取key为username的cookie值 if(c != '' && c.indexOf('username') > -1) {var arr = c.split(';');// 以分号,将cookie进行拆分存到一个arr数组中for(var i = 0;i<arr.length;i++) { // 遍历数组arr var key_val = arr[i].split("=");// 获取key和val if(key_val[0] == 'username') { // 设置cookie的值到输入框this.form.name = key_val[1]; }} }},onLogin() {const user = 'username'const {name,date} = this.form;if(name) { this.setCookie(user,name,date); this.$message({message: `用户名的cookie已经设置成功,刷新页面时仍然是显示的,保存${date}天时间`,type: 'success',duration: '5000'});console.log('submit!'); }else {this.$message.error('用户名不能为空')}}},}; </script>
<style> .wrap {text-align: left;}.content {margin: 10px auto;display: flex;justify-content: center;}.el-radio-group {display:flex;justify-content: left;}.login {text-align: left;} </style> 

以上本示例中的源码,其中核心代码设置cookie如下所示

// 如果是在原生js里,需要写function,上面的是vue的代码,省略了function 的
function setCookie(user,val,expiredays) {// 把用户名保存进cookie里面document.cookie = `${user}=${val}`var exdate = new Date(); // 当前时间exdate.setTime(exdate.getDate() + expiredays*24*3600*1000);// 设置时间,多少天失效// 设置为新的值document.cookie += `;'expires='${exdate.toGMTString()}`; // 根据格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果
} 

设置cookie主要需要有cookie名,它是键值对的,还需要一个设置一个过期时间

使用document.cookie可以读取cookie,也可以重新设置cookie

而获取cookie,需要将从cookie中拿到指定的cookie,需要通过split,先拆,然后在获取指定的cookie值,重新在设置值的,更多的新手同学,可能就是卡在怎么去拆的,然后取到对应的值的,其实,代码也很简单

具体代码如下所示

function getCookie() { // 提取当前的cookie let c = document.cookie; // 提取key为username的cookie值 if(c != '' && c.indexOf('username') > -1) {var arr = c.split(';');// 以分号,将cookie进行拆分存到一个arr数组中for(var i = 0;i<arr.length;i++) { // 遍历数组arr var key_val = arr[i].split("=");// 获取key和val if(key_val[0] == 'username') { // 设置cookie的值到输入框this.form.name = key_val[1]; // 这里就是在重新赋值,将cookie获取到的val进行赋值 }} }
 }, 

总结

cookie它是浏览器document下的属性,是一种机制,只是提供了一个接口给js脚本进行使用,通过添加cookie以及expires达到保存多少天的效果

cookie的用途比较多,可以与服务器端进行交互,cookie的值是会随着表单的提交发送到服务器的,所以它可以作为一些特殊的字段来使用的

比如:服务端的session就需要依赖cookie

最后

为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

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

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

相关文章

【数据结构与算法——C语言版】3. 二分查找

前言 本文将介绍在线性表查找中非常常用的一种查找算法——二分法&#xff0c;先介绍二分查找法的核心思路&#xff0c;然后进行代码讲解&#xff0c;最终给出二分查找法的时/空复杂度&#xff0c;并比较其和上篇文章【数据结构与算法——C语言版】2. 数组介绍的顺序查找的区别…

神经网络漫谈(一)

神经网络漫谈(一) 发表时间&#xff1a; 2023年1月6日创作地点&#xff1a;湖北省武汉市作者&#xff1a;ixy_com&Bill Kromydas封面图片来源&#xff1a;Towards Data Science 1、背景 基本概念&#xff1a;神经网络&#xff0c;也称为人工神经网络 (ANN) 或模拟神经…

基础数据结构——二叉树

目录 一、二叉树性质 1、满二叉树、完全二叉树 2、平衡二叉树 3、不平衡二叉树 二、二叉树的存储 1、普通做法 2、竞赛做法 三、二叉树的遍历 1、宽度优先遍历 2、深度优先遍历 &#xff08;1&#xff09;先&#xff08;根&#xff09;序遍历 &#xff08;2&#x…

【java中的集合框架】学习接触java中的集合,走上学习数据结构道路

前言&#xff1a; 大家好&#xff0c;我是良辰呀&#x1f3eb;&#x1f3eb;&#x1f3eb;&#xff0c;从今天开始&#xff0c;我们一起来探索数据结构的知识海洋。期待与大家结伴同行&#xff0c;gogogo。&#x1f36c;&#x1f36c;&#x1f36c; &#x1f9d1;个人主页&…

【自学C++】C++命名空间

C命名空间 C命名空间教程 C 中的命名空间实际上就是一个由程序设计者命名的内存区域&#xff0c;程序设计者可以根据需要指定一些有名字的空间域&#xff0c;把一些全局实体分别放在各个命名空间中&#xff0c;从而与其他全局实体分隔开来。 命名空间是 ANSI C 引入的可以由…

前端入门笔记 03 —— Web(html CSS)布局

常用布局 包含两个定义&#xff1a; 尺寸 定位 定义通过CSS拾取网页元素&#xff0c;控制他们控制普通文档流&#xff0c;周边元素&#xff0c;父容器&#xff0c;浏览器窗口 覆盖默认布局行为盒子模型普通文档流 &#xff08;左到右&#xff0c;上到下&#xff09; 块级元素…

2022年中国数字化十大转型趋势

推动数字化发展既是数字时代构筑竞争新优势的战略选择&#xff0c;也是加快构建“双循环”新发展格局和打造高质量发展新引擎的现实需要。我国高度重视数字化发展&#xff0c;不断完善政策措施&#xff0c;着力推动数字化转型。从行业发展看&#xff0c;构建以数据为驱动、以客…

Redis(一)

Nosql 即 Not-Only SQL&#xff08; 泛指非关系型的数据库&#xff09;&#xff0c;作为关系型数据库的补充。 Nosql 作用&#xff1a;应对基于海量用户和海量数据前提下的数据处理问题。 特征 降低磁盘IO次数&#xff0c;越低越好 —— 内存存储 去除数据间关系&#xff…

网络技术基础

theme: qklhk-chocolate 网络技术基础 一、IP地址基础 IP地址是指在网络中用于标识发送或接收数据报文设备的唯一的逻辑地址。 IP地址的主要作用&#xff1a; 标识主机或网络设备&#xff08;标识其网络接口&#xff0c;提供其在网络中的位置&#xff09;网络寻址 •在IP网…

安装pytorch搭配cuda使用

问题 深度学习程序&#xff0c;在服务器运行&#xff0c;需要借助GPU加速。为了检测是否开启了GPU加速&#xff0c;采用以下代码&#xff1a; ~python >> import torch >> torch.cuda.is_available() >> false #说明没有使用GPU加速安装过程 安装老版本的…

如何做好美颜sdk与直播平台的适配?

美颜sdk作为目前社交视频拍摄平台用户的刚需&#xff0c;在近几年可谓是名声大噪&#xff0c;无论是强大的美颜功能还是多元化的趣味拍摄方案都让用户们“爱不释手”&#xff0c;平台自然也是看中了这一点&#xff0c;纷纷为自己平台接入美颜工具。但是&#xff0c;美颜sdk作为…

免费视频格式转换软件,6大免费视频转换器推荐

看到大多数人拥有电脑、智能电视&#xff0c;尤其是移动设备&#xff0c;这一代人并不奇怪。在线观看电影和视频是最常见的消磨时间的娱乐方式之一。能够通过网络观看视频是件好事。有些人还喜欢下载它以供离线观看&#xff0c;因为您并非一直都在使用 Wi-Fi。有时&#xff0c;…

C++——异常

文章目录1.C语言传统的处理错误的方式2. C异常概念3. 异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3异常安全3.4 异常规范4.自定义异常体系5.C标准库的异常体系6.异常的优缺点6.1 C异常的优点&#xff1a;6.2 C异常的缺点&#xff1a;1.C语言传统的处理错误的方式 传统…

Codeforces Round #842 (Div. 2)(A~D)

A. Greatest Convex给出数字k&#xff0c;输出最大的x&#xff0c;使得x满足大于等于1小于k&#xff0c;且x! (x - 1)!是k的倍数。思路&#xff1a;提取公因式得到&#xff0c;(x 1) * (x - 1)!&#xff0c;由题意知&#xff0c;x 1可以是k&#xff0c;故x最大是k - 1且一定…

如何制作网站?不知道这个诀窍你的网站等于白做

如何制作网站?不知道这个诀窍你的网站等于白做!#外贸 #独立站 #跨境电商 #网站优化 #网站建设 做每一个网页之前&#xff0c;先确定好网页里面的元素&#xff0c;你知道客户是谁&#xff0c;他目前生意做什么体量&#xff0c;主要做什么市场&#xff1f; 我在根据我拿到的这…

【实操篇】Linux的磁盘分区和挂载

目录 ●磁盘分区及挂载 ●典型案例实战 ●磁盘查询 1.查询系统整体磁盘使用情况 2.查询指定目录的磁盘占用情况 3.实用指令及其案例 ●树状目录展示 ●磁盘分区及挂载 简要介绍&#xff1a; 1.Linux无论有几个分区&#xff0c;还是分给哪个目录去使用。它归根结底也就只有…

C. Least Prefix Sum(优先队列)

传送门题意&#xff1a;给你一个长度为n的数组&#xff0c;你可以进行任意次操作&#xff08;也可能是0&#xff09;&#xff0c;可以使&#xff0c;然后给你一个数m&#xff0c;问你要进行多少次操作&#xff0c;才能使长度为m的前缀和的值在所有的前缀和中最小。思路&#xf…

JS 的 9 种作用域,你能说出几种?

作用域想必大家都知道&#xff0c;就是变量生效的范围&#xff0c;比如函数就会生成一个作用域&#xff0c;声明的变量只在函数内生效。 而这样的作用域一共有 9 种&#xff0c;其中几种绝大多数前端都说不出来。 下面我们就一起过一遍这 9 种作用域吧&#xff0c;看看你知道…

具有自主、多鳍和仿生机器人的鱼类三维游泳(2021)

具有自主、多鳍和仿生机器人的鱼类三维游泳(2021) 原文链接&#xff1a;https://iopscience.iop.org/article/10.1088/1748-3190/abd013 这是一篇仿生机器鱼的设计&#xff0c;该论文从鱼的仿生结构到具体的一部分电路设计都有非常详细的介绍&#xff0c;鱼的尺寸大小仅有手掌…

只有从根本上改变对于元宇宙的看法,才能将它的发展带入到一个全新阶段

经历了资本的狂热追捧之后&#xff0c;元宇宙开始进入到相对冷静的发展阶段里。在这样一个阶段&#xff0c;元宇宙不再被看成是一个万能的存在&#xff0c;不再被看成是一个无所不包的存在&#xff0c;而是变成了一个相对较为客观和理性的存在。看看Meta的表现&#xff0c;看看…