goframe开发一个企业网站 在vue-next-admin 显示验证码 19

index.go 文件中的代码,我将为该文件中的主要功能和方法添加注释,并生成一篇 Markdown 格式的文章。这将包括对每个函数的用途、输入参数和返回值的简要说明。

index.go

在这里插入图片描述

包和导入
package adminimport ("context""errors""gf_new_web/api/common""gf_new_web/internal/service""github.com/gogf/gf/v2/frame/g"
)
  • 包名: admin
  • 导入说明:
    • context: 用于传递请求上下文。
    • errors: 用于处理错误。
    • gf_new_web/api/commongf_new_web/internal/service: 项目内部的 API 和服务层。
    • github.com/gogf/gf/v2/frame/g: GoFrame 框架的核心包。
登录功能
func (c *cIndex) Login(ctx context.Context, req *common.UserLoginReq) (*common.ReturnJsRes, error) {g.Log().Info(ctx, "收到登录请求", req)loginRes, err := service.User().Login(ctx, req)if err != nil {return nil, err}r := g.RequestFromCtx(ctx)loginRes.Msg = "登录成功"r.Response.WriteJson(loginRes)return loginRes, nil
}
  • 功能: 处理用户登录请求。
  • 参数:
    • ctx: 请求的上下文。
    • req: 用户登录请求的详细信息。
  • 返回:
    • *common.ReturnJsRes: 登录操作的结果。
    • error: 错误信息。
注册功能
func (c *cIndex) Reg(ctx context.Context, req *common.UserRegisterReq) (*common.ResultRes[int64], error) {g.Log().Info(ctx, "收到注册请求", req)registerRes, err := service.User().Register(ctx, req)if err != nil {return nil, err}r := g.RequestFromCtx(ctx)r.Response.WriteJson(registerRes)return registerRes, nil
}
  • 功能: 处理用户注册请求。
  • 参数:
    • ctx: 请求的上下文。
    • req: 用户注册请求的详细信息。
  • 返回:
    • *common.ResultRes[int64]: 注册操作的结果。
    • error: 错误信息。
获取用户信息
func (c *cIndex) GetInfo(ctx context.Context, req *common.UserInfoReq) (*common.ReturnJsRes, error) {g.Log().Info(ctx, "收到获取用户信息请求", req)infoRes, err := service.User().GetInfo(ctx, req)if err != nil {return nil, err}r := g.RequestFromCtx(ctx)infoRes.Msg = "获取用户信息成功"r.Response.WriteJson(infoRes)return infoRes, nil
}
  • 功能: 获取用户的详细信息。
  • 参数:
    • ctx: 请求的上下文。
    • req: 用户信息请求的详细信息。
  • 返回:
    • *common.ReturnJsRes: 用户信息。
    • error: 错误信息。
获取验证码
func (c *cIndex) GetCaptcha(ctx context.Context, req *common.CodeReq) (*common.ReturnJsRes, error) {g.Log().Info(ctx, "收到获取验证码请求", req)captchaId, base64Image := service.Captcha().Get()if captchaId == "" || base64Image == "" {return nil, errors.New("获取验证码失败")}return &common.ReturnJsRes{Code: 0,Msg:  "获取验证码成功",Data: g.Map{"captchaId": captchaId,"image":     base64Image,},}, nil
}
  • 功能: 生成并返回验证码。
  • 参数:
    • ctx: 请求的上下文。
    • req: 验证码请求的详细信息。
  • 返回:
    • *common.ReturnJsRes: 验证码信息。
    • error: 错误信息。
      启动的端口为8555

vue-next-admin 中的相关配置 :

在这里插入图片描述
改为对应的端口。
api中进行改变:
在这里插入图片描述

import request from '/@/utils/request';/*** (不建议写成 request.post(xxx),因为这样 post 时,无法 params 与 data 同时传参)** 登录api接口集合* @method signIn 用户登录* @method signOut 用户退出登录*/
export function useLoginApi() {return {signIn: (data: object) => {return request({url: '/admin/login',method: 'post',data,});},getCode: () => {return request({url: '/admin/code',method: 'get'});},signOut: (data: object) => {return request({url: '/admin/signOut',method: 'post',data,});},};
}

界面进行引入验证码:
在这里插入图片描述

相关代码:

以下是从您提供的文件中提取的 getLoginCodeonSignIn 函数的详细说明:

getLoginCode 函数

这个函数负责异步获取登录验证码。它首先尝试调用登录API的 getCode 方法来获取验证码。如果成功,它会更新状态中的 captchaImgcaptchaId。如果失败,它会捕获错误并显示错误消息。

const getLoginCode = async () => {try {const res = await useLoginApi().getCode();if (res.data.data) {state.captchaImg = res.data.data.image;state.ruleForm.captchaId = res.data.data.captchaId;} else {throw new Error('验证码数据格式错误');}} catch (error: any) {ElMessage.error(error?.message || '获取验证码失败');}
};

onSignIn 函数

这个函数处理用户的登录操作。它首先验证用户输入的手机号和密码格式是否正确。如果格式验证失败,将显示相应的错误消息。如果格式验证成功,它将尝试通过API进行登录。登录成功后,会根据配置决定初始化前端或后端路由,并处理登录成功后的跳转和状态更新。如果登录失败,它会显示错误消息并重新获取验证码。

const onSignIn = async () => {state.loading.signIn = true;try {if (!verifyPhone(state.ruleForm.userName)) {ElMessage.error('手机号格式错误');return;}if (!verifyPasswordLengthNoSpaces(state.ruleForm.password)) {ElMessage.error('密码格式错误');return;}const res = await useLoginApi().signIn({username: state.ruleForm.userName,password: state.ruleForm.password,code: state.ruleForm.code,});if (res.code === 200) { // 假设200是成功状态码Session.set('token', res.data.token);Cookies.set('userName', state.ruleForm.userName);let isNoPower;if (!themeConfig.value.isRequestRoutes) {isNoPower = await initFrontEndControlRoutes();} else {isNoPower = await initBackEndControlRoutes();}signInSuccess(isNoPower);} else {ElMessage.error(res.msg || '登录失败');getLoginCode();}} catch (error) {ElMessage.error('登录失败,请重试');getLoginCode();} finally {state.loading.signIn = false;}
};

这两个函数是登录流程的核心部分,处理验证码获取和用户身份验证的逻辑。

在这里插入图片描述

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

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

相关文章

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…

Scrapy图解工作流程-cnblog

1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…

SpringCloud入门实战-Nacos简介、安装、运行详解

❤️ 《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址 ❤️ 作者:一只IT攻城狮。关注我,不迷路。 ❤️ 再小的收获x365天都会成就…

量子安全与经典密码学:一些现实方面的讨论

量子安全与经典密码学 背景:量子安全与经典密码学量子计算对传统密码学的威胁 安全性分析经典密码学的数学复杂性假设**量子密码学的物理不可克隆性假设** **性能与实现难度**后量子算法在经典计算机上的运行效率**量子通信设备的技术要求与成本** **可扩展性与适用…

Ubuntu20.04运行msckf_vio

文章目录 环境配置修改编译项目运行MSCKF_VIO运行 Launch 文件运行 rviz播放 ROSBAG 数据集 运行结果修改mskcf 保存轨迹EVO轨迹评价EVO轨迹评估流程实操先把euroc的真值转换为tum,保存为data.tum正式评估 报错1问题描述 报错2问题描述问题分析问题解决 参考 环境配…

vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘

1 问题描述 我在vscode下面编写python程序,这个程序是在一个英伟达anoconda环境下的项目。之前能运行能调试,最近发现只能运行ctlf5,但是使用f5进行调试时,报错“File “c:\Users\86137.vscode\extensions\ms-python.debugpy-202…

vim 分割窗口后,把状态栏给隐藏

一、基本环境 主机MacOs Sonoma 14.7主机终端Iterm2虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 最小安装 二、分割窗口后的截图,红色线条部分就是状态栏 分割后个布局是:顶部1行高度窗口&#x…

flink学习(7)——window

概述 窗口的长度(大小): 决定了要计算最近多长时间的数据 窗口的间隔: 决定了每隔多久计算一次 举例:每隔10min,计算最近24h的热搜词,24小时是长度,每隔10分钟是间隔。 窗口的分类 1、根据window前是否调用keyBy分为键控窗口和非键控窗口…

【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测

简介:介绍 TM-16多线激光雷达 在8210A载板,TX2核心模块环境(Ubuntu18.04)下测试ROS驱动,打开使用RVIZ 查看点云数据,本文的前提条件是你的TX2里已经安装了ROS版本:Melodic。 大家好,…

【排版教程】Word、WPS 分节符(奇数页等) 自动变成 分节符(下一页) 解决办法

毕业设计排版时,一般要求每章节的起始页为奇数页,空白页不显示页眉和页脚。具体做法如下: 1 Word 在一个章节的内容完成后,在【布局】中,点击【分隔符】,然后选择【奇数页】 这样在下一章节开始的时&…

【GAMES101笔记速查——Lecture 20 Color and Perception】

颜色与感知 目录 1 光场(Light Field / Lumigraph) 1.1 全光函数 1.1.1 改进:引入波长 1.1.2 改进:添加时间t 1.1.3 改进:人可以移动,添加空间坐标 1.1.4 改进:不把函数当电影来看。 1.…

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量…

ArcGIS+deck.gl矢量切片三维化表示建筑白模

01 背景介绍 很多ArcGIS API for JavaScript的用户想要ArcGIS的矢量切片技术体系实现Mapbox gl将城市建筑物footprint矢量切片三维化成建筑白模的效果。效果如图:截图来自mapbox studio1但目前仅靠ArcGIS VectorTileServer 和 ArcGIS API for JavaScript本身无法达…

Windows下安装FreeSurfer教程

简介 FreeSurfer 是一个开源软件包,用于分析和可视化横断面和纵向研究的结构、功能和扩散神经成像数据。它由Athinoula A. Martinos 生物医学成像中心的计算神经成像实验室开发。 官网 功能 FreeSurfer 为结构 MRI 数据提供完整的处理流,包括&#xf…

RTMP协议

背景介绍 RTMP(Real Time Messaging Protocol) 是由 Adobe 公司基于 Flash Player 播放器对应的音视频 flv 封装格式提出的一种,基于TCP 的数据传输协议。本身具有稳定、兼容性强、高穿透的特点。常被应用于流媒体直播、点播等场景。常用于推…

计算机网络----基本概念

基本概念 在这一章从整体上介绍计算机网络的概况, 为后续的学习搭建起整体的框架; 介绍计算机网络中的基础术语和概念; 什么是因特网 『 因特网 』是一个世界范围内互联了数以亿计的计算设备的计算机网络; 因特网具体构成 因特网互联了数以亿计的计算设备, 这些设备被称为…

CKA认证 | Day4 K8s管理应用生命周期(下)

第四章 K8s管理应用程序生命周期(下) 1、Pod对象 1.1 Pod 的基本概念 Pod 是 Kubernetes 中最基本和最重要的概念之一,是一个逻辑抽象概念,Kubernetes创建和管理的最小单元, 一个Pod由一个容器或多个容器组成。它简…

【微服务】Nacos

一、安装 1、官网地址:https://nacos.io/download/nacos-server/ 2、启动:找到bin目录下的startup.cmd双击启动,或者打开一个命令窗口输入: startup.cmd -m standalone双击启动后如下:可以访问控制台地址 访问后的…

学习笔记032——Spring学习笔记

文章目录 一、Spring开发步骤二、Spring配置文件1、Bean标签基本配置2、Bean标签范围配置3、Bean生命周期配置4、Bean实例化三种方式5、Bean的依赖注入概念6、Bean的依赖注入方式【第一种:set方法注入】【第二种:构造方法注入】 7、Bean的依赖注入的数据…

某科技研发公司培训开发体系设计项目成功案例纪实

某科技研发公司培训开发体系设计项目成功案例纪实 ——建立分层分类的培训体系,加强培训跟踪考核,促进培训成果实现 【客户行业】科技研发行业 【问题类型】培训开发体系 【客户背景】 某智能科技研发公司是一家专注于智能科技、计算机软件技术开发与…