三十七、Gin完成登陆功能

embedded/2024/9/24 1:06:03/

目录

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/embedded/112555.html

相关文章

flink 常见的缩减状态的方式

在 Apache Flink 中,缩减状态(state reduction)是指在流处理任务中,通过一定的方式减少或优化状态的存储和管理,降低内存消耗或加快计算速度。以下是 Flink 中常见的缩减状态的方式: 1. 时间窗口(Windowing&#xff0…

解决跨境电商平台账号无法访问的常见问题

跨境电商的迅猛发展,越来越多的卖家选择在全球各大电商平台如亚马逊、eBay等进行商品销售。然而,在实际运营过程中,卖家经常会遇到账号无法访问、应用打不开等问题,导致业务受阻。本文将针对这些问题进行详细分析,并提…

VMamba: Visual State Space Model 论文总结

题目:VMamba: Visual State Space Model(视觉状态空间模型) 论文:[2401.10166] VMamba: Visual State Space Model (arxiv.org) 源码:https://arxiv.org/pdf/2401.10166 (github.com) 目录 一、摘要 二、引言 三、方…

C sharp 学习 笔记

介绍 这篇文章是我学习C#语言的笔记 学的是哔哩哔哩刘铁锰老师2014年的课程 在学习C#之前已经学习过C语言了。看的是哔哩哔哩比特鹏哥的课程。他们讲的都很不错 正在更新, 大家可以在我的gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion中导入…

C++设计模式

设计模式 设计模式分类 1)根据目的分为三类: 创建型,结构型和行为型; 创建型模式主要用于创建对象。结构型模式主要用于处理类或对象的组合。行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。 2)根据范围…

敲击键盘到屏幕上打印字符计算机都做了什么

当你在 Linux 系统上按下键盘的 x 键并看到屏幕上打印出字母 x 时,Linux 系统内部发生了很多过事情,涉及硬件、操作系统内核和用户空间的多个层次。下面是一个大致的流程: 1. 硬件层 键盘硬件捕获按键:当你按下 x 键&#xff0c…

php 实现JWT

在 PHP 中,JSON Web Token (JWT) 是一种开放标准 (RFC 7519) 用于在各方之间作为 JSON 对象安全地传输信息。JWT 通常用于身份验证系统,如 OAuth2 或基于令牌的身份验证。 以下是一个基本的 PHP 实现 JWT 生成和验证的代码示例。 JWT 的组成部分 JWT …

[数据集][目标检测]高铁受电弓检测数据集VOC+YOLO格式1245张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1245 标注数量(xml文件个数):1245 标注数量(txt文件个数):1245 标注…