chat/auth.go

46 lines
904 B
Go
Raw Normal View History

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
}