j
jaryue
V1
2023/04/20阅读:21主题:默认主题
实现登录功能day3实现改密接口
-
新增密码加密操作
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
}
-
实现改密接口
新增结构体: 改密接受信息
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",
})
})
作者介绍
j
jaryue
V1