js怎么保存用户登录信息?js cookie操作封装

14 篇文章 0 订阅
13 篇文章 0 订阅

web开发中,用户登录后需要保存登录信息进行身份识别,登录后的操作都需要带上身份信息请求接口。保存登录信息有多种方法,这里使用cookie进行操作。

最终成果:封装cookie操作模块

// utils/cookie.js
export default {
  // 设置cookie
  setCookie: function (name, value, expireDays) {
    var expires = null
    if (expireDays) {
      var exp = new Date()
      exp.setDate(exp.getDate() + expireDays)
      expires = exp.toGMTString()
    }
    document.cookie = name + '=' + escape(value) + (expires ? ';expires=' + expires : '')
  },
  // 获取指定名称cookie
  getCookie: function (name) {
    if (document.cookie.length === 0) {
      return null
    }
    var arr = null
    var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
    if (arr = document.cookie.match(reg)) {
      return unescape(arr[2])
    } else {
      return null
    }
  },
  // 删除cookie
  removeCookie: function (name) {
    if (!this.getCookie(name)) {
      return
    }
    this.setCookie(name, '', -1)
  },
  // 清空cookie
  clearCookie: function () {
    var cookies = document.cookie.match(/[^ =;]+(?=\=)/g)
    if (!cookies) {
      return
    }
    /*
    var exp = new Date()
    exp.setTime(exp.getTime() - 1)
    var expires = exp.toGMTString()
    for (var i = cookies.length; i--;) {
      document.cookie = cookies[i] + '=;expires=' + expires
    }
    */
    for (var i = cookies.length; i--;) {
      this.setCookie(cookies[i], '', -1)
    }
  }
}

cookie工具模块使用示例:

  import cookie from 'path/to/utils/cookie.js'
  cookie.clearCookie()
  cookie.setCookie('name', 'Alice', 1)
  cookie.setCookie('age', 20, 1)
  console.log(cookie.getCookie('name'))
  console.log(cookie.getCookie('age'))
  cookie.removeCookie('age')
  console.log(cookie.getCookie('age'))

下面是步骤拆解过程:

一、设置cookie,写入cookie

基础用法

// 创建cookie
document.cookie = 'name=Alice'
console.log(document.cookie) // 'name=Alice'

// 继续添加cookie
document.cookie = 'age=5000'
console.log(document.cookie) // 'name=Alice; age=5000'

// 修改cookie,名称相同的cookie会覆盖已有cookie的值
document.cookie = 'name=Tony'
console.log(document.cookie) // 'age=5000; name=Tony'

以上代码创建cookie时没有指定过期时间,cookie将会在浏览器关闭时自动删除。

设置过期时间

下面给cookie设置过期时间,过期后cookie将自动删除,否则将会保存在本地文件系统中。

// 创建cookie时,带上过期时间 expires
// 在name-value后添加分号; 再加上expires=日期时间转位GTM格式
document.cookie = 'age=5000; expires=' + new Date().toGMTString()
// 以上代码设置过期时间为当前时间,所以cookie会立即过期

// 设置过期时间为10秒后
document.cookie = 'age=5000; expires=' + new Date(new Date().getTime() + 10 * 1000).toGMTString()

设置cookie方法封装

// 设置cookie
function setCookie(name, value, expireDays) {
  var expires = null
  if (expireDays) {
    var exp = new Date()
    exp.setDate(exp.getDate() + expireDays)
    expires = exp.toGMTString()
  }
  document.cookie = name + '=' + escape(value) + (expires ? ';expires=' + expires : '')
}

// test
setCookie('name', 'Alice', 1)

二、获取cookie

基础用法

var cookieStr = document.cookie
// 'name=Alice'

根据name获取cookie

// 获取指定名称cookie
function getCookie(name) {
  if (document.cookie.length === 0) {
    return null
  }
  var arr = null
  var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
  if (arr = document.cookie.match(reg)) {
    return unescape(arr[2])
  } else {
    return null
  }
}

// test
getCookie('name')
// 'Alice'

三、删除cookie

// 删除cookie
function removeCookie(name) {
  if (!getCookie(name)) {
    return
  }
  setCookie(name, '', -1)
}

// test
removeCookie('name')

removeCookie方法先查询是否存在该cookie,存在则设置过期时间为1天前,即立即过期。

四、清空cookie

// 清空cookie
function clearCookie() {
  var cookies = document.cookie.match(/[^ =;]+(?=\=)/g)
  if (!cookies) {
    return
  }
  var exp = new Date()
  exp.setTime(exp.getTime() - 1)
  var expires = exp.toGMTString()
  for (var i = cookies.length; i--;) {
    document.cookie = cookies[i] + '=;expires=' + expires
    // 或直接调用上面的 setCookie 方法
    // setCookie(cookies[i], '', -1)
  }
}

遇到cookie使用的时候就可以直接用这个工具模块,效率加倍!

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装 JavaScript 的 Cookie,可以创建一个名为 "CookieUtil" 的对象,并为该对象定义一些方法来处理 Cookie。以下是一个基本的示例: ```javascript var CookieUtil = { // 获取指定名称的 Cookie 值 get: function(name) { var cookieName = encodeURIComponent(name) + "=", cookieStart = document.cookie.indexOf(cookieName), cookieValue = null; if (cookieStart > -1) { var cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd)); } return cookieValue; }, // 设置 Cookie set: function(name, value, expires, path, domain, secure) { var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value); if (expires instanceof Date) { cookieText += "; expires=" + expires.toGMTString(); } if (path) { cookieText += "; path=" + path; } if (domain) { cookieText += "; domain=" + domain; } if (secure) { cookieText += "; secure"; } document.cookie = cookieText; }, // 删除指定名称的 Cookie remove: function(name, path, domain, secure) { this.set(name, "", new Date(0), path, domain, secure); } }; ``` 使用示例: ```javascript // 设置一个名为 "username" 的 Cookie,有效期为一天 CookieUtil.set("username", "John Doe", new Date(Date.now() + (24 * 60 * 60 * 1000))); // 获取名为 "username" 的 Cookie 值 var username = CookieUtil.get("username"); console.log(username); // 删除名为 "username" 的 Cookie CookieUtil.remove("username"); ``` 这只是一个简单的封装示例,你可以根据需要进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值