// internal/models/user_np.go package models import ( "time" "golang.org/x/crypto/bcrypt" "gorm.io/gorm" ) // UserNP 用户名密码认证模型 type UserNP struct { ID int64 `json:"id" gorm:"primaryKey"` Username string `json:"username" gorm:"not null;index;size:255;unique"` Password string `json:"password" gorm:"not null;size:255"` Email *string `json:"email" gorm:"type:text;unique"` Token *string `json:"token" gorm:"type:text"` CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"index"` } // HashPassword 对密码进行哈希处理 func (u *UserNP) HashPassword(password string) error { bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14) if err != nil { return err } u.Password = string(bytes) return nil } // CheckPassword 验证密码 func (u *UserNP) CheckPassword(providedPassword string) bool { err := bcrypt.CompareHashAndPassword([]byte(u.Password), []byte(providedPassword)) return err == nil }