第二弹
在一个帖子里好麻烦,就单独发了
事情比较多,一起更新吧
老规矩,直接上代码。语言天赋太差
注意:只会更新基础代码,逻辑需要自己完善
今天开始写前端了,后续更新应该会晚两天
//添加中间件 拦截请求并作出判断
func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 这里可以添加具体的权限校验逻辑,例如从请求头获取token并验证等
token := c.GetHeader("Authorization")
if token == "" {
// c.JSON(http.StatusUnauthorized, gin.H{"error": "未提供授权令牌"})
// c.Abort()
// return
c.Next()
}
// 假设这里进行一些简单验证,实际要根据真实逻辑完善
if token != "valid_token" {
//c.JSON(http.StatusForbidden, gin.H{"error": "无效的授权令牌"})
//c.Abort()
//return
c.Next()
}
c.Next()
}
}
//路由入口没有什么更新
func SetupRouter() *gin.Engine {
router := gin.Default()
api := router.Group("/api/v1")
SetupUserRoutes(api)
return router
}
//路由文件把auth加进去就可以了
func SetupUserRoutes(api *gin.RouterGroup) {
users := api.Group("/users")
users.Use(auth.AuthMiddleware())
{
// 创建用户
users.POST("", controllers.CreateUser)
}
}
//最终main文件长这样。
package main
import (
"github.com/gin-contrib/cors"
"server/config"
"server/routes"
"server/utils"
)
func main() {
config.ConnectDB()
router := routes.SetupRouter()
router.Use(cors.New(cors.Config{
AllowOrigins: []string{"*"}, // 替换为前端实际的域名,支持多个,["*"] 表示允许所有源跨域
AllowMethods: []string{"GET", "POST"},
AllowHeaders: []string{"Origin", "Content-Type", "Authorization"},
}))
_, _, err := utils.GenerateKeyPair()
if err != nil {
// 处理错误
panic(err)
}
}
|