Vue登录页面之前端利用cookie记住密码

Vue登录页面之前端利用cookie记住密码

1、html

	  <el-button 
	  	:loading="loading" 
	  	type="primary" 
	  	style="width:100%;margin-bottom:30px;" 
	  	@click.native.prevent="handleLogin">
	  	登录
	  </el-button>
	  <div style="text-align:right; width:100%">
        <el-checkbox v-model="checked" style="float:left; text-align:left;">记住密码</el-checkbox>
      </div>

2、script

export default {
  data() {
    return {
      loginForm: {
        username: '14725836912',
        password: '123456789'
      },
      checked: false
    }
  },
  
  mounted() {
  //获取cookie值
    this.getCookie();
  },

   methods: {
    setCookie(c_name, c_pwd, exdays) {
                var exdate = new Date(); //获取时间
                exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); //保存的天数
                //字符串拼接cookie
                window.document.cookie = "userName" + "=" + c_name + ";path=/;expires=" + exdate.toGMTString();
                window.document.cookie = "userPwd" + "=" + c_pwd + ";path=/;expires=" + exdate.toGMTString();
            },
            //读取cookie
            getCookie: function() {
                if (document.cookie.length > 0) {
                    var arr = document.cookie.split('; '); //这里显示的格式需要切割一下自己可输出看下
                    for (var i = 0; i < arr.length; i++) {
                        var arr2 = arr[i].split('='); //再次切割
                        //判断查找相对应的值
                        if (arr2[0] == 'userName') {
                            this.loginForm.username = arr2[1]; //保存到保存数据的地方
                        } else if (arr2[0] == 'userPwd') {
                            this.loginForm.password = arr2[1];
                        }
                    }
                }
            },
    handleLogin() {
      const self = this;
      //判断复选框是否被勾选 勾选则调用配置cookie方法
      if (self.checked == true) {
          console.log("checked == true");
             //传入账号名,密码,和保存天数3个参数
          self.setCookie(self.loginForm.username, self.loginForm.password, 7);
      }else {
            console.log("清空Cookie");
            //清空Cookie操作一下
            self.clearCookie();
            }
      }
    }
 }
 }
### Vue3 中实现记住密码功能的前端缓存方式 在 Vue3 项目中实现记住密码的功能时,选择合适的前端缓存机制至关重要。以下是关于 `sessionStorage`、`Cookie` 和 `localStorage` 的分析及其适用场景。 #### 1. **Session Storage** `sessionStorage` 是一种浏览器存储技术,数据仅在同一会话期间有效,在关闭页面或标签页后会被清除[^2]。由于其短暂性和局限性,它不适合用于长期保存用户的登录状态或记住密码功能。因此,对于“记住密码”的需求来说,`sessionStorage` 并不是一个理想的选择。 #### 2. **Local Storage** `localStorage` 提供了一种持久化的键值对存储方案,除非手动删除或者通过代码移除,否则数据不会过期并一直存在[^3]。这使得它可以很好地支持“记住密码”这种需要较长时间保留用户凭证的功能。然而需要注意的是,虽然方便易用,但它并不具备任何安全特性,默认情况下所有的脚本都可以访问其中的数据。如果直接把敏感信息(如明文密码)放入 localStorage,则可能带来严重的安全隐患。 #### 3. **Cookies** 相比其他两种方法,`cookies` 不仅有能力携带少量数据随HTTP请求发送到服务器端处理外,还自带一些重要的安全性选项比如HttpOnly标志位可以防止XSS攻击窃取cookie内容;Secure属性确保只有HTTPS连接才能传输这些信息从而减少中间人劫持风险等等[^4]。当涉及到身份验证令牌或者其他形式的安全认证凭据传递给后台服务的时候,采用设置恰当参数后的 cookies 往往更为推荐。 综合考虑以上三种方式的特点以及实际应用场景中的安全性要求: - 如果只是简单地记录用户名以便下次自动填充表单字段而不需要涉及太多隐私保护的话,可以选择使用 `localStorage`. - 对于更复杂的情况尤其是包含加密密钥或者是JWT这样的token管理则应该优先考虑利用配置完善的 Cookies 来完成这项工作. 下面给出一段基于Vue.js框架下如何操作LocalStorage来模拟记住账号逻辑的小例子: ```javascript // 存储账户名至本地储存 function saveUsername(username){ window.localStorage.setItem('saved_username', username); } // 获取之前保存过的账户名 function getUsername(){ return window.localStorage.getItem('saved_username'); } ``` 最后提醒一点,无论选用哪种具体的技术手段都要充分评估潜在的风险因素并且采取相应的防护措施以保障最终用户体验的同时也维护好系统的整体健壮程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值