1 Star 0 Fork 0

叶明志 / golang练习

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
userDao.go 2.64 KB
一键复制 编辑 原始数据 按行查看 历史
package dao
import (
"GolangLearnPractice1/bookstore2/model"
"GolangLearnPractice1/bookstore2/utils"
"crypto/md5"
"crypto/rand"
"encoding/base64"
"errors"
"fmt"
"time"
)
//CheckUserNameAndPassword 检查用户名称和密码
func CheckUserNameAndPassword(userName, initPassword string) error {
user, _ := GetUserByUserName(userName)
if user == nil {
//没有此用户
err := errors.New("用户与密码不匹配")
return err
}
//以盐值对初始密码进行加密后得到密码
md5Inst := md5.New()
initPassword = initPassword + user.Salt
md5Inst.Write([]byte(initPassword))
passwordBytes := md5Inst.Sum([]byte([]byte(user.Salt)))
password := fmt.Sprintf("%q", passwordBytes)
//那加密处理后密码与数据库的密码比较
if password == user.Password {
//用户与密码匹配
return nil
}
//密码不正确
err := errors.New("用户与密码不匹配")
return err
}
//GetUserByID 通过ID得到用户的名称和密码
func GetUserByID(userID int64) (*model.User, error) {
user := &model.User{}
sqlStr := "select id,userName,password,salt,email,userStatus,createTime from users where id=?"
row := utils.Db.QueryRow(sqlStr, userID)
err := row.Scan(&user.UserID, &user.UserName, &user.Password, &user.Salt, &user.Email, &user.UserStatus, &user.CreateTime)
if err != nil {
return nil, err
}
return user, nil
}
//InsertUser 插入用户信息
func InsertUser(userName, initPassword, email string) error {
sqlStr := "insert into users(userName,password,salt,email,userStatus,createTime) values(?,?,?,?,?,?)"
//生成加盐
p, _ := rand.Prime(rand.Reader, 60) //n代表位数,比如3为2位,127为7位
b := p.Bytes()
salt := base64.URLEncoding.EncodeToString(b)
//对密码根据盐值进行加密,得到密码
md5Inst := md5.New()
initPassword = initPassword + salt
md5Inst.Write([]byte(initPassword))
passwordBytes := md5Inst.Sum([]byte(salt))
password := fmt.Sprintf("%q", passwordBytes)
//生成时间
createTime := time.Now().Format("2006-01-02 15:04:05")
//将用户信息插入数据库
_, err := utils.Db.Exec(sqlStr, userName, password, salt, email, 0, createTime)
if err != nil {
fmt.Println("数据库插入错误。")
return err
}
return nil
}
//GetUserByUserName 根据用户名称找用户
func GetUserByUserName(userName string) (*model.User, error) {
sqlStr := "select id,userName,password,salt,email,userStatus,createTime from users where userName=?"
row := utils.Db.QueryRow(sqlStr, userName)
user := &model.User{}
err := row.Scan(&user.UserID, &user.UserName, &user.Password, &user.Salt, &user.Email, &user.UserStatus, &user.CreateTime)
if err != nil {
return nil, err
}
return user, nil
}
Go
1
https://gitee.com/yemingzhi/GolangLearnPractice1.git
git@gitee.com:yemingzhi/GolangLearnPractice1.git
yemingzhi
GolangLearnPractice1
golang练习
2bf136849dce

搜索帮助