三十七、Gin完成登陆功能

news/2024/12/23 5:02:33/

目录

gin-left:80px;">

gin-left:80px;">一、完成dao

gin.go-toc" style="margin-left:80px;">二、services包下新建login.go

gin-left:80px;">三、路由绑定


一、完成dao

这个方法意思是通过这个userid查询数据

func (a *AccountDao) Fist(UserID string) (*model.Account, error) {var account model.Accounterr := a.db.Where("user_id = ?", UserID).First(&account).Errorif err != nil {fmt.Printf("AccountDao Fist = [%v]", err)return nil, err}return &account, nil
}

gin.go">二、services包下新建login.go

package servicesimport ("ContentSystem/internal/dao""github.com/gin-gonic/gin""golang.org/x/crypto/bcrypt""net/http"
)// 入参
type LoginReq struct {UserID   string `json:"user_id" binding:"required"`Password string `json:"password" binding:"required"`
}// 回包
type LoginRsp struct {SessionID string `json:"session_id"`UserID    string `json:"user_id"`Nickname  string `json:"nickname"`
}// 登陆方法
func (c *CmsApp) Login(ctx *gin.Context) {//入参声明var req LoginReq//入参绑定结构体if err := ctx.ShouldBindJSON(&req); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}//声明数据,不写需要频繁调用req.UserID ...var (userID   = req.UserIDpassword = req.Password)//实例化dao赋值accountDaoaccountDao := dao.NewAccountDao(c.db)//调用查询方法account, err := accountDao.Fist(userID)if err != nil {ctx.JSON(http.StatusInternalServerError, gin.H{"error": "账号输入错误"})return}//密码校验 比较数据库中密码与传递进来的密码,不报错则验证通过,报错则验证失败if err := bcrypt.CompareHashAndPassword([]byte(account.Password),[]byte(password)); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"error": "密码输入错误"})return}//todo 生成sessionid方法待完善sessionID := generateSessionID()//回报填值ctx.JSON(http.StatusOK, gin.H{"code": http.StatusOK,"msg":  "登陆成功","data": &LoginRsp{SessionID: sessionID,UserID:    account.UserID,Nickname:  account.Nickname,},})return
}
func generateSessionID() string {//todo 生成sessionID//todo 保存sessionIDreturn "session-id"
}

三、路由绑定

	noAuth.POST("cms/login", cmsApp.Login)


http://www.ppmy.cn/news/1526462.html

相关文章

NLP(文本处理技术)在数据分析中的应用实例

在Python中,你可以实现多种自然语言处理(NLP)技术。Python拥有丰富的库和框架,使得NLP任务变得更加容易和高效。接下来将列举一些NLP(文本处理技术)具体功能的Python实现。 一:文本预处理 1:英文版 # 文…

使用豆包MarsCode编程助手提升开发效率的实战分享!

作为一名开发者,我们总是追求高效、快速的编码体验。在日常开发工作中,代码的自动补全、优化建议、单元测试生成、Bug修复等功能都是提高开发效率和质量的关键。而豆包MarsCode编程助手正是这样一款工具,它通过AI技术为开发者提供了智能化的解…

无人机之悬停精度篇

无人机的悬停精度是指无人机在无GPS信号或其他外部定位辅助下,能够保持在一个固定空间位置时的精度。这一精度受到多种因素的影响,包括但不限于风速、气压、温度、湿度以及无人机自身的姿态稳定性等。以下是对无人机悬停精度的详细分析: 一、…

天地一体化物联网:挑战与机遇

这篇论文的标题是《Space-Terrestrial Integrated Internet of Things: Challenges and Opportunities》,作者包括Juan A. Fraire, Oana Iova, 和 Fabrice Valois。文章发表在2022年12月的IEEE Communications Magazine上。论文主要探讨了如何将卫星通信与物联网&am…

Spring Boot 集成 MongoDB - 入门指南

引言 随着NoSQL数据库的流行,MongoDB 成为了许多现代Web应用程序的首选数据库之一。它提供了高性能、高可用性和易于扩展的能力。Spring Boot 框架以其开箱即用的理念简化了Java应用程序的开发过程。本文将指导您如何在Spring Boot项目中集成MongoDB,以…

Linux - iptables防火墙

目录 一、iptables概述 二、规则表与规则链结构(四表五链) 1.简述 2.四表(规则表) 3.五链(规则链) 三、数据链过滤的匹配流程 四、iptables命令行配置方法 1.命令格式 2.基本匹配条件 3.隐含匹配 …

LAMP+WordPress

一、简介 LAMP: L:linux——操作系统,提供服务器运行的基础环境。A:apache(httpd)——网页服务器软件,负责处理HTTP请求和提供网页内容。M:mysql,mariadb——数据库管理…

3. 进阶指南:自定义 Prompt 提升大模型解题能力

怎么判断 Prompt 的好坏,有什么问题有着标准答案么? 答:让大模型求解数学问题。 李宏毅老师的 HW4 正好提到了有关数学问题的 Prompt,所以我决定中间插一篇这样的文章。通过本文你将: 了解各种 Prompt 如何影响大型语言…