vue + koa2 + crypto-js + md5加密:创建加密账户、登录验证

一、前端页面设置

1、创建账户

import CryptoJS from 'crypto-js';
const loginFun = function () {request({url: '/user/register',method: 'post',data: {username: ruleForm.username,password: CryptoJS.MD5(ruleForm.password).toString(),role: ruleForm.role}}).then((res) => {console.log(res);});
};

2、登录

import CryptoJS from 'crypto-js';
const loginFun = function () {request({url: '/user/login',method: 'post',data: {username: ruleForm.username,password: CryptoJS.MD5(ruleForm.password).toString()}}).then((res) => {if (res.data.success && res.data && res.data.data) {const role = res.data.data.role;const username = res.data.data.username;const token = res.data.token;localStorage.setItem('role', role);localStorage.setItem('username', username);localStorage.setItem('token', token);router.push('/');return;}ElMessage({type: 'warning',message: res.data.message});});
};

前端其实没什么说的,无论是创建还是登录,每次只需要加密后发到后端即可

二、后端操作

后端是koa2 + elasticsearch数据库

后端在收到后,为了增强安全,我们不会直接将前端的 password 储存到数据库中,需要再次加密一次,然后在登录时对比再次加密的数据是否相等,核心代码如下

const crypto = require(‘crypto’);
const hash = crypto.createHash(‘md5’)
hash.update(registerBody.password);
const encryptedPassword = hash.digest(‘hex’); // 这个就是再次加密后的数据

1、创建

async registerUser(ctx, next) {console.log('registerUser');const registerBody = ctx.request.body;// 这里就是再次加密的逻辑const hash = crypto.createHash('md5')hash.update(registerBody.password);const encryptedPassword = hash.digest('hex');console.log('encryptedPassword', encryptedPassword);// 储存在数据库中的操作,这里大家按自身实际情况处理let result = await modulesBase.registerUser({body: {username: registerBody.username,password: encryptedPassword,role: registerBody.role}});console.log(result);ctx.body = {data: result};}

2、登录

async loginFun(ctx, next) {const registerBody = ctx.request.body;console.log('loginFun');console.log(registerBody);// 登录时 拿到密码我们这里也是再次加密,这样就和数据库中储存的逻辑一致了const hash = crypto.createHash('md5')hash.update(registerBody.password);const encryptedPassword = hash.digest('hex');// 查找逻辑,根据用户名和密码查找是否有对应的数据// 这里其实有一个优化的点,我们应该先查找用户名 如果用户名匹配不上,自然登录失败// 然后再查找到用户名后 对比密码是否一致,我这里直接匹配了let result = await modulesBase.searchUser({query: {bool: {must: [{match: {username: registerBody.username}},{match: {password: encryptedPassword}}]}}});if (result.hits && result.hits.hits.length) {ctx.body = {data: {data: {role: result.hits.hits[0]._source.role,username: result.hits.hits[0]._source.username},message: 'success',success: true,token: token.signToken({username: registerBody.username, password: registerBody.password})}};return;}ctx.body = {data: {data: null,message: 'Incorrect account or password',success: false}};}

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

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

相关文章

徐翔——投资的心性

徐翔,1976年出生。 1993年,徐翔当时还是个高中生,17岁的他带着父母给的几万元本钱进入股票市"那个时候,宁波老百姓家里几万元很正常,而且家里就我一个小孩。”徐翔说。场。1994年,18岁的徐翔放弃高考&#xff0c…

XML的现状及其发展

XML(Extensible Markup Language)是一种用于描述结构化数据的标记语言,它具有良好的可读性和可扩展性,并且被广泛应用于数据交换、数据存储和配置文件等领域。 目前,XML仍然是一种非常重要的数据交换格式。它被广泛应…

Nat Plants | 植物抽核单细胞!多组学探究大豆根瘤成熟过程

发表时间:2023-04 发表期刊:Nature Plants 影响因子:17.352 DOI:10.1038/s41477-023-01387-z 研究背景 根瘤菌是亲和互作寄主植物,感染宿主并在根部形成共生器官根瘤,具有固氮…

jmeter中HttpClient4发送失败,java方法请求成功

jmeter中HttpClient4请求失败 上传文件时:Httpclient4: 请求体 请求头 响应结果 ,后端服务都总是提示存在非法标签。 jmeter中使用java请求成功 修改使用java方式,访问正常; 根据分析可能因为HC4对一些特殊字符会进行转义,转义后…

idea配置MySQL提示

点击sql语句,然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库

做私域不止是积累流量,生态也很重要!

如今,私域流水占比已经逼近整个零售市场的30%,达到4万亿规模,百度、阿里、腾讯等头部玩家也都在加速布局,私域运营,已不再是一个单一的商业模式或者运营手段,而是逐渐构成一种可持续的行业生态。 一、什么…

全球量子计算已开始商业化!应用最多的行业你一定想不到

内容来源:量子前哨(ID:Qforepost) 文丨卉可 排版丨沛贤 深度好文:2600字丨5 分钟阅读 01 量子计算是一场高风险的游戏 近日,PsiQuantum从澳大利亚联邦政府和地方政府获得了10亿澳元资金,这…

大屏UI:建筑可视化应用越来越广泛,根本挡不住。

建筑可视化在可视化大屏中有许多应用场景,以下是其中一些常见的应用场景: 建筑项目展示:可以使用建筑可视化技术展示正在进行或已完成的建筑项目。通过可视化大屏,可以展示建筑的外观、内部布局、材料选择等信息,帮助…

鬼畜作品创作必备素材,鬼畜自学语音包合集

一、素材描述 鬼畜是什么?鬼畜是一种网络流行语,也是网络文化的一种表现形式。它指的是将原本无关的两个或多个视频、音频、图片或文字进行剪辑、混合、重组等处理后,形成一种新的有趣、诙谐或恶搞的作品。鬼畜的制作过程通常需要一定的技术…

图像归一化处理

归一化 归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。 在多种计算中都经常用到这种方法。 简单介绍 归一化是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关…

C++哈希(个人笔记)

C哈希 1.unordered_mapd1.1unordered_map的构造函数1.2unorder_map的容量1.3unordered_map的迭代器1.4unordered_map的元素访问1.5unorder_map的查找1.6unordered_map的修改操作1.7unordered_map的桶操作 2.unordered_set3.unordered_set和unordered_set的笔试题4.哈希4.1哈希概…

应急救灾北斗终端手机应用方案

在应对自然灾害和紧急救援的严峻挑战中,技术的力量从未如此重要。为了保障救援人员能够迅速、准确地响应灾情,提供及时有效的救助,顶坚应急救灾北斗终端手机应用应运而生。这款应用依托北斗卫星导航系统的高精度定位与通信功能,不…

谁考了第k名C++

题目描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。(按成绩从大到小排列) 输入 第一行有两个整数,分别是学生的人数n(1≤n≤100&…

MWM燃气发动机TEM控制系统维修TEM-EVO触摸屏 工业液晶显示屏深圳捷达工控维修

MWM 燃气发动机、发电机组、发电机组、热电联产、热电联产厂、热电联产 MWM 是高效、环保的热电联产发电厂市场领域的世界领先品牌之一,该发电厂用于利用热电联产 (CHP)进行分散式发电。这家总部位于曼海姆的公司由卡尔奔驰 (Carl Benz) 于 1871 年创立,…

图扑智慧农业——生态鱼塘数字孪生监控

智慧农业园作为新型农业经营模式,正在以其高效、环保、可持续的特点受到广泛关注。智慧鱼塘作为智慧农业中一项关键技术,结合物联网、人工智能、云计算等技术,实现对新型养殖模式的实时监控、优化与管理。 效果展示 图扑软件应用自研 HT for…

java如何直接读取excel文件进行增删改查操作

首先先创建一个文件路径类,用来放置文件的位置 package com.ruoyi.web.core.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springfra…

巩固学习7

正则表达式 就是用来找到符合模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束 找某个字符串 import re text身高:178 体重:168 学号:123456 密码:9527 #在Python中,r前缀用…

登录uniapp存入token方便其他页面用

// 登录函数 function login(username, password) {// 假设这是你的登录接口const loginUrl https://your-api-domain.com/login;// 使用uni.request发送登录请求uni.request({url: loginUrl,method: POST,data: {username: username,password: password},success: (res) >…

数据库种类

关系型数据库是目前应用最广泛的数据库类型。它诞生于1969年,并采用由行和列组成的二维表来管理数据,这种结构与Excel工作表相似,因此易于理解和使用。关系型数据库主要使用SQL(结构化查询语言)来进行数据操作。传统的…

BFD双向转发检测

BFD概述 Bidirectional Forwarding Detection :双向转发检测 BFD技术背景 现网中存在的问题 不能快速有效的发现网络设备或链路中出现的故障不能以毫秒级的速度发现网络中的问题协议自身的报文检测机制一般都大于1秒 解决方案: 需要一种专门用于快…