实现登录功能day3实现改密接口

  1. 新增密码加密操作
    encryptPassword函数接收一个字符串类型的密码作为参数,将其转换为字节类型并通过sha256.New()创建一个SHA-256哈希对象。随后将密码字节数据传入哈希对象中,并使用Sum(nil)方法获取哈希值的字节数据,最后将字节数据转换为十六进制字符串并返回。这样处理后,用户的密码将以十六进制字符串的形式进行存储,增加了密码的安全性,提高了系统的安全性。
func encryptPassword(password string) string {
    // 将字符串类型的密码转换为字节类型
    passwordBytes := []byte(password)
    // 创建SHA-256哈希对象
    sha256Hash := sha256.New()
    // 将密码字节数据传入哈希对象
    sha256Hash.Write(passwordBytes)
    // 获取哈希值的字节数据
    hashBytes := sha256Hash.Sum(nil)
    // 将字节数据转换为十六进制字符串
    hashString := hex.EncodeToString(hashBytes)
    // 返回十六进制字符串类型的哈希值
    return hashString
}

添加user数据与 , ;验证用户密码函数的变化\

password进行加密储存与对比

// add:向user(注册列表)添加元素
func AddLogindata(db *sql.DB, logindata *Logindata) error {

 _, err := db.Exec("insert into user (name,password,Email) VALUES (?, ?, ?)", logindata.Name, encryptPassword(logindata.Password), logindata.Email)
 if err != nil {
  return err
 }
 return nil
}


// 查:验证user(注册列表)密码
func Verifypassword(db *sql.DB, id int, password string) error {

 count := 0
 err := db.QueryRow("SELECT COUNT(*) FROM user WHERE id = ? AND password = ? ", id, encryptPassword(password)).Scan(&count)
 if err != nil {
  return err
 }
 return nil
}

  1. 实现改密接口

新增结构体: 改密接受信息

type ResetpaswData struct {
 SignInData  `json:"signindata"`
 Password    string `json:"password"`
 Newpassword string `json:"newpassword"`
}
 //模拟注册,向注册表加数据
 r.POST("/login"func(ctx *gee7.Context) {
  data := funcmod.Logindata{}
  //读取用户传入的json数据
  ctx.Getjson(&data)
  err := funcmod.AddLogindata(db, &data)
  if err != nil {
   ctx.FailJson(401, err.Error())
  } else {
   ctx.JSON(200, gee7.H{
    "msg""成功",
   })
  }
 })
 //修改密码
 r.POST("resetpasw"func(ctx *gee7.Context) {
  data := funcmod.ResetpaswData{}
  //读取用户传入的json数据
  ctx.Getjson(&data)
  //身份验证
  err = funcmod.SignInVerification(db, &data.SignInData)
  if err != nil {
   ctx.FailJson(401, err.Error())
   return
  }
  //验证密码
  err = funcmod.Verifypassword(db, data.SignInData.ID, data.Password)
  if err != nil {
   ctx.FailJson(401, err.Error())
   return
  }
  //修改密码
  err = funcmod.Changepassword(db, data.ID, data.Newpassword)
  if err != nil {
   ctx.FailJson(401, err.Error())
   return
  }
  // 添加操作信息
  err = funcmod.Addoperation(db, data.ID, "改密成功")
  if err != nil {
   ctx.JSON(401, gee7.H{
    "msg": err.Error(),
   })
  }
  ctx.JSON(200, gee7.H{
   "msg""ok",
  })
 })

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值