Egg框架搭建后台服务【3】- 验证码

2024-01-14 00:36

本文主要是介绍Egg框架搭建后台服务【3】- 验证码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求

登录页面需要一个验证码,防止出现频繁“撞库”情况。

开发

安装

安装 svg-captcha 插件,实现 SVG 图片动态验证码。

npm i --save svg-captcha

配置

svg-captcha 不需要配置,但是因为牵扯到验证码校验时,需要将验证码共享到全局,方便其他位置的方法调用。

所以这里启用 session。(Ps:egg 框架自带 session,不需要额外安装)

// config.default.js
config.session = {key: 'EGG_SESSION_KEY',maxAge: 24 * 3600 * 1000, // 过期时间24小时httpOnly: true, // 默认就是 trueencrypt: true, // 加密传输renew: true  //每次访问页面都会给session会话延长时间
}

后台

const {Service} = require('egg');
const svgCaptcha = require('svg-captcha');class SystemService extends Service {async login(params) {const {ctx, app} = this;// 校验验证码if (params.verifyCode === ctx.session.verifyCode) {ctx.state = 200;ctx.body = {code: 200,success: true,data: {token: 123},msg: '登录成功',show: true}} else {ctx.body = {code: 400,success: false,msg: '验证码错误',show: true}}}async verifyCode() {const {ctx, app} = this;const verifyConfig = {size: 5,ignoreChars: '0oO1ilI', // 验证码字符中排除 0oO1ilInoise: 3, // 干扰线条的数量width: 176,height: 40,fontSize: 50,color: true, // 验证码的字符是否有颜色,默认没有,如果设定了背景,则默认有background: '#fff',}// 生成二维码svgconst captcha = svgCaptcha.create(verifyConfig);// 验证码文字存放在 session 中(不区分大小写)ctx.session.verifyCode = captcha.text.toLowerCase();ctx.response.type = 'image/svg+xml';ctx.body = {code: 200,success: true,data: captcha.data,msg: '验证码获取成功',show: false}}
}module.exports = SystemService;

前台

/** 刷新验证码 */
const reloadCaptcha = () => {captcha().then(res => {verifyImg.value = res.data;});
}<div class="verify-code" @click="reloadCaptcha"><a-tooltip placement="right"><template #title>点击刷新验证码</template><div v-html="verifyImg"></div></a-tooltip>
</div>

总结

验证码的实现借助插件还是比较简单的,但是对于 session 的认知和应用和后端人员还有较大差距,尤其对于 session & cookie 等方面需要加强。

如果自己做的系统对其他人开放的,在保证自己系统足够安全的情况下,我建议大家尽量不要增加验证码,减轻视障朋友们登录系统的负担。拙见~

这篇关于Egg框架搭建后台服务【3】- 验证码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603341

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映