No description
- HTML 76.9%
- Go 23.1%
- 添加项目标题和功能特性介绍 - 详细描述认证、密码管理、用户管理等功能模块 - 列出技术栈包括Go、Gin、SQLite等组件信息 - 提供安装与运行步骤说明 - 添加页面路由表格和数据库结构说明 - 介绍安全特性和活动日志功能 - 包含API使用示例和注意事项 - 补充贡献指南和许可证信息 |
||
|---|---|---|
| .idea | ||
| frontend | ||
| .env | ||
| data.db | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
授权系统 (AuthSystem)
基于 Go + Gin + SQLite 构建的现代化用户认证与授权管理系统,提供完整的用户管理、密码重置、安全设置和活动日志等功能。
✨ 功能特性
🔐 认证功能
- 用户登录/登出:支持用户名密码认证,自动设置会话 Cookie
- 密码加密:使用 bcrypt 算法进行密码哈希存储
- 记住登录状态:Cookie 有效期 1 小时
🔑 密码管理
- 忘记密码:通过邮箱接收密码重置链接
- 重置密码:令牌验证,1 小时有效期
- 修改密码:在线修改登录密码,验证原密码
👤 用户管理
- 个人资料:查看和编辑用户信息(用户名、邮箱)
- 账户配置:支持用户自定义邮箱地址
🛡️ 安全功能
- 登录通知:新设备登录时自动发送邮件通知
- 安全设置:可配置的安全选项
- 活动日志:记录所有用户操作(登录、登出、修改密码等)
- IP 追踪:记录操作的 IP 地址和用户代理
📧 邮件服务
- SMTP 集成:支持自定义 SMTP 服务器配置
- 密码重置邮件:精美的 HTML 邮件模板
- 登录通知邮件:实时发送登录提醒
🔌 API 接口
- 授权验证 API:
POST /api/v1/checkAuth- 用于第三方服务的 Token 验证 - 用户信息 API:
POST /api/profile- 获取用户信息POST /api/profile/update- 更新用户资料POST /api/change-password- 修改密码POST /api/security/toggle- 切换安全设置POST /api/activity/list- 获取活动日志
🏗️ 技术栈
- 后端框架: Go 1.26 + Gin v1.12.0
- 数据库: SQLite (modernc.org/sqlite)
- 密码加密: bcrypt (golang.org/x/crypto)
- 环境配置: godotenv
- 前端: HTML5 + CSS3 + JavaScript
- 邮件服务: 原生 SMTP 协议实现
📦 安装与运行
前置要求
- Go 1.26 或更高版本
- Git
克隆项目
安装依赖
配置环境变量
复制 .env 文件并根据需要修改配置:
运行应用
应用将在 http://localhost:8080 启动
默认账户
- 用户名: admin
- 密码: password
⚠️ 首次登录后请立即修改默认密码!
📱 页面路由
| 路径 | 描述 |
|---|---|
/ |
首页 |
/login |
登录页面 |
/dashboard |
用户仪表盘 |
/profile |
个人资料 |
/change-password |
修改密码 |
/security |
安全设置 |
/activity |
活动日志 |
/forgot-password |
忘记密码 |
/reset-password |
重置密码 |
🗄️ 数据库结构
users 表
activity_logs 表
🔒 安全特性
- 密码加密: 使用 bcrypt 算法,成本因子为 10
- CSRF 保护: Cookie 安全标志设置
- SQL 注入防护: 参数化查询
- 令牌过期: 密码重置令牌 1 小时后自动失效
- 活动审计: 所有关键操作均有日志记录
- 内存存储: 用户数据同时存储在内存和数据库中,提高性能
📊 活动日志类型
系统记录以下操作:
- 🔐 登录 (LOGIN)
- 🚪 退出 (LOGOUT)
- 🔑 修改密码 (CHANGE_PASSWORD)
- 🛡️ 安全设置 (SECURITY_SETTING)
- 📝 其他操作
每条日志包含:
- 操作用户名
- 操作类型和描述
- IP 地址
- 用户代理
- 执行状态(成功/失败)
- 时间戳
🚀 API 使用示例
检查授权
获取用户资料
更新用户资料
修改密码
添加新功能
- 在
main.go中添加新的路由处理函数 - 在
frontend/目录创建对应的 HTML 页面 - 如需数据库支持,在
initDatabase()中更新表结构 - 使用
logActivity()记录重要操作
📝 注意事项
- SMTP 配置: 如需邮件功能,请在
.env中配置正确的 SMTP 服务器信息 - 数据库文件:
data.db会自动创建,无需手动初始化 - 默认用户: 系统启动时会自动创建 admin 用户(如果不存在)
- 并发安全: 使用
sync.RWMutex保证用户数据并发访问安全 - 生产环境: 建议修改默认密码,配置 HTTPS,启用更严格的安全策略
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
本项目采用 MIT 许可证。
👨💻 作者
如有问题,请联系作者或提交 Issue。
最后更新: 2026 年 3 月 20 日