- 在客户端添加首页路由的认证逻辑,提高用户体验 - 优化静态资源服务配置,增强安全性 - 添加 URL 解析和保存功能,为后续的路由认证做准备 - 调整中间件顺序和配置,提升应用性能和安全性
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"gateway/config"
|
|
"gateway/handlers"
|
|
"gateway/middleware"
|
|
"gateway/models"
|
|
"gateway/utils"
|
|
"path/filepath"
|
|
|
|
"github.com/gin-contrib/sessions"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/jinzhu/gorm"
|
|
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
|
)
|
|
|
|
func main() {
|
|
// 初始化日志
|
|
utils.InitLogger()
|
|
|
|
// 解析static/index.html中的URLs并立即写入
|
|
hrefs, err := utils.ExtractHrefs("static/index.html")
|
|
if err != nil {
|
|
utils.Logger.Fatalf("解析HTML文件失败: %v", err)
|
|
}
|
|
|
|
// 保存URLs到config目录
|
|
configPath := filepath.Join("config", "urls.json")
|
|
if err := config.SaveURLsToFile(hrefs, configPath); err != nil {
|
|
utils.Logger.Fatalf("保存URLs失败: %v", err)
|
|
}
|
|
|
|
utils.Logger.Info("成功提取并保存URLs")
|
|
|
|
// 初始化数据库
|
|
db, err := gorm.Open("sqlite3", "family.db")
|
|
if err != nil {
|
|
utils.Logger.Fatalf("数据库连接失败: %v", err)
|
|
}
|
|
defer db.Close()
|
|
db.AutoMigrate(&models.Region{}, &models.User{})
|
|
|
|
// 初始化 Gin 引擎
|
|
r := gin.Default()
|
|
|
|
// 配置 Session 中间件(移到最前面)
|
|
store := config.InitSessionStore()
|
|
r.Use(sessions.Sessions("mysession", store))
|
|
|
|
// 配置静态文件服务,添加认证中间件
|
|
r.Use(middleware.StaticAuthMiddleware())
|
|
r.Static("/static", "./static")
|
|
r.LoadHTMLGlob("templates/*")
|
|
|
|
// 路由配置
|
|
r.GET("/login", handlers.GetLogin)
|
|
r.POST("/login", handlers.PostLogin(db))
|
|
r.GET("/register", handlers.GetRegister(db))
|
|
r.POST("/register", handlers.PostRegister(db))
|
|
r.GET("/api/user/info", handlers.GetUserInfo(db))
|
|
|
|
// 文档页面路由
|
|
r.GET("/", handlers.ServeIndex(db))
|
|
|
|
// 权限校验中间件
|
|
//r.Use(middleware.AuthRequired())
|
|
|
|
// 添加路由认证中间件
|
|
r.Use(middleware.RouteAuthMiddleware())
|
|
|
|
// 在权限校验中间件后添加退出路由
|
|
r.GET("/logout", handlers.Logout)
|
|
|
|
// 新增通用静态文件路由(放在其他路由之后)
|
|
r.NoRoute(handlers.ServeStatic(db))
|
|
|
|
// 启动服务
|
|
r.Run(":7070")
|
|
}
|