GoLand 项目从 0 到 1:第六天 —— 权限接口开发与问题攻坚
第六天核心任务:权限接口完善与技术难题突破
第六天的开发聚焦于权限管理模块的接口完善,在实现核心功能的过程中,遇到了密码加密方案选择、多表联查 SQL 构建、PostgreSQL 数组类型适配及大整数 ID 前端兼容等问题,通过针对性优化逐一解决,确保了权限功能的健壮性与兼容性。
一、密码加密方案:安全性与灵活性的平衡
在用户认证模块中,密码加密是核心安全环节,本次实现了两种加密方案并明确了适用场景:
1. 单向哈希加密(bcrypt)
适合存储用户登录密码(不可逆,高安全性):
// HashPassword 使用bcrypt加密密码(单向)
func HashPassword(password string) (string, error) {// 生成哈希值,cost为默认工作因子(可调整复杂度)bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)if err != nil {return "", err}return string(bytes), nil
}// CheckPassword 验证密码与哈希值是否匹配
func CheckPassword(password, hash string) bool {// 比对原始密码与哈希值err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))return err ==