46 lines
904 B
Go
46 lines
904 B
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
// 用户结构体
|
|
type User struct {
|
|
Username string
|
|
PasswordHash []byte
|
|
}
|
|
|
|
// 模拟用户存储(实际应存入数据库)
|
|
var users = map[string]User{}
|
|
|
|
// 注册用户
|
|
func RegisterUser(username, password string) error {
|
|
if _, exists := users[username]; exists {
|
|
return errors.New("用户已存在")
|
|
}
|
|
hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
users[username] = User{
|
|
Username: username,
|
|
PasswordHash: hash,
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 用户登录验证
|
|
func AuthenticateUser(username, password string) error {
|
|
user, exists := users[username]
|
|
if !exists {
|
|
return errors.New("用户不存在")
|
|
}
|
|
err := bcrypt.CompareHashAndPassword(user.PasswordHash, []byte(password))
|
|
if err != nil {
|
|
return errors.New("密码错误")
|
|
}
|
|
return nil
|
|
}
|