首页 > 编程语言 >微信小程序记住密码,让登录解放双手

微信小程序记住密码,让登录解放双手

时间:2023-11-21 20:44:06浏览次数:38  
标签:加密 登录 微信 Base64 密码 let

密码是用户最重要的数据,也是系统最需要保护的数据,我们在登录的时候需要用账号密码请求登录接口,如果用户勾选记住密码,那么下一次登录时,我们需要将账号密码回填到输入框,用户可以直接登录系统。我们分别对这种流程进行说明:

记住密码

在请求登录接口成功后,我们需要判断用户是否勾选记住密码,如果是,则将记住密码状态账号信息存入本地。
下次登录时,获取本地的记住密码状态,如果为true则获取本地存储的账号信息,将信息回填登录表单。
在这里插入图片描述
在这里插入图片描述

密码加密

我在这里例举两种加密方式MD5Base64
MD5:
1、不可逆
2、任意长度的明文字符串,加密后得到的固定长度的加密字符串
3、实质是一种散列表的计算方式

Base64:
1、可逆性
2、可以将图片等二进制文件转换为文本文件
3、可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符
4、实质是 一种编码格式,如同UTF-8

我们这里使用Base64来为密码做加密处理。

npm install --save js-base64

引入Base64

// js中任意位置都可引入
let Base64 = require('js-base64').Base64;

可以通过encodedecode对字符串进行加密和解密

let Base64 = require('js-base64').Base64;

let pwd = Base64.encode('a123456'); 
console.log(pwd);  // YTEyMzQ1Ng==

let pws2 = Base64.decode('YTEyMzQ1Ng==');
console.log(pwd2);  // a123456

到这里我们对密码的简单加密和解密就完成了。
需要注意的是,Base64是可以解密的,所以单纯使用Base64进行加密是不安全的,所以我们要对Base64进行二次加密操作,生成一个随机字符串 + Base64的加密字符。

/***
 * @param {number} num 需要生成多少位随机字符
 * @return {string} 生成的随机字符 
 */
const randomString = (num) => {
  let str = "",
    arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
  let index = null;
  for (let i = 0; i < num; i++) {
    index = Math.round(Math.random() * (arr.length - 1));
    str += arr[index];
  }
  return str;
}

调用randomString函数,根据你传入的数字来生成指定长度的随机字符串,然后将随机字符串与Base64生成的随机字符凭借,完成对密码的二次加密。

let pwd = randomWord(11) + Base64.encode(password); // J8ndUzNIPTtYTEyMzQ1Ng==

到这里就完成了密码加密操作。
在用户登录时,将账号密码存入本地,存入本地方式有很多,例如:CookieslocalStoragesessionStorage等,关于使用方法网上有很多,这里我们使用微信小程序的存储方式wx.setStorageSyn

// 我们这里使用微信小程序的存储方式wx.setStorageSync
let account = {
   username: 'test‘,
   password: pwd
 }
wx.setStorageSync('account', account)

在这里插入图片描述

二次登录

用户勾选记住密码后,第二次进入系统,直接从本地获取账号密码,对密码进行解密后回填到表单。
先判断用户是否勾选记住密码,然后对密码进行解密。

init() {
   let state = wx.getStorageSync('rememberMe')
   if (state) {
      let account = wx.getStorageSync('account')
      let Base64 = require('js-base64').Base64;
      let pwd = Base64.decode(account.password.slice(11))
      this.setData({
        username: account.username,
        password: pwd
      })
    }
   this.setData({ rememberMe: state })
 }

将解密后的数据回显到表单上,用户就可以直接登录了。

最后

关于记住密码业务,需要保证用户的密码是加密存储,这里用的是微信小程序示例,在web上的流程也是如此,你可以在vue项目中使用本文提到的方法。


如果你觉得本文章不错,欢迎点赞

标签:加密,登录,微信,Base64,密码,let
From: https://www.cnblogs.com/wang-fan-w/p/17847542.html

相关文章

  • IdentityServer4:密码模式
    IdentityServer4:密码模式  目录IdentityServer4:密码授权模式Api资源项目创建项目依赖包添加认证方案添加Api认证服务器创建项目依赖包配置IdentityServer4集成IdentityServer4密码模式客户端创建项目依赖包Program.csDataService.cs......
  • 如何优雅的使用微信小程序的wx.request请求(封装request.js工具类)
    首先官方的文档不是支持Promise风格的请求我们通过官方文档可以看到微信小程序发请求的一些具体参数,下面的代码展示了用wx.request()发送的一个标准请求:wx.request({     url:"https://xxx.com",     method:"POST",     data:{   ......
  • springboot移动端授权登录请求接口说明
    使用系统内部演示代码,在附件下载方便统一管理用户方便在线用户监控一处编写、处处可用统一鉴权方式1.新增角色、用户组【若已分配可跳过】角色管理-新增专门用于移动等模块-不分配任何后台菜单【DZDS已有】2.新增、修改用户在业务模块添加、修改用户信息,需要同步到sys_user中......
  • FinClip解决繁琐的第三方微信授权登录流程
    用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。微信的授权登录在日常应用中应用的非常广泛,越来越多的平台支持用户使用微信进行授权第三方登录.使用微信授权登录有哪些优势/好处;用户量足够大,基本所有用户都会有微信,登录......
  • 微信附近人wxid采集工具,可通过QQ附近人提取转换,易语言版接口代码
    这个调用的是一个POST接口,我用fiddler抓取的,并非是逆向或者是破解奥,是正常公开的接口,我只是对数据对了一些编码转换和整理,可以提取附近人的数据包,然后通过数据包可以直接加微信,就这么简单,但是还是存在一些技术原理,ck是我自己账号的我就不提供了。框架设计界面: 数据包可以直接......
  • qq附近人提取脚本插件,微信wxid附近人提取接口工具,易语言代码分享,POST方式学习教程
    其实打开Qq附近人后它会返回一个数据包我们只需要把这个数据包提取解析出来就可以提取对方的wxid或者是QQ号,通过这个WXID还能直接加好友,而且是免费的接口,我今天把基础源码和案例图发给大家,免费分享,没有HOOK也没有逆向,就抓包实现的,正常逻辑哈,并非是违规开发。框架图:  转换后......
  • 2023-11-21 托管第三方开发的小程序如何加急发布?==》需要调用微信提供的接口去发布
    接口地址:https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/code-management/speedupCodeAudit.html 你可以在这里调试:https://developers.weixin.qq.com/apiExplorer?apiName=startPushTicket&plat=thirdparty 注:审核单id为你提......
  • Linux下创建FTP虚拟用户的配置过程--非系统帐号登录FTP
    前言        在日常的工作中经常会遇到这样的情况,为了ftp的用户的登录安全,需要创建一些FTP账户来连接或登录FTP服务,而又不想让用户拥有系统级别的账号。    尽管也可以在FTP服务器设置让一些用户无法登陆系统,如果需要创建很多ftp用户的需求的话,那和创建这......
  • 第三方登录实现及基本原理
    一、什么是第三方登录?简单来讲,就是用户可以通过已有网站或应用的账号,登录我们自己的应用;如常见的QQ,微信,微博;效果是,如果不需要在我们应用再次注册账户,直接使用QQ,微信,微博等平台账户就可以登录我们的应用。如图: 第三方登录解决了什么问题?降低用户使用产品的门槛;因为,注册和登......
  • 免密登录远程主机(Linux)
    Windows(本地):生成公钥和私钥:ssh-keygen-trsa一直回车,默认就行了.文件会生成在用户目录的下的.ssh文件夹中,公钥和私钥分别为:id_rsa.pub和id_rsaLinux(远端):在当前用户home目录的下的.ssh文件夹(如不存在则需自己创建)中,创建authorized_keys文件(如不存在):将Windows(本地)生......