40 lines
788 B
Go
40 lines
788 B
Go
package main
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 基础认证中间件
|
|
func BasicAuth() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
username, password, ok := c.Request.BasicAuth()
|
|
|
|
if !ok || username != "admin" || password != "password123" {
|
|
c.JSON(401, gin.H{"error": "Unauthorized"})
|
|
c.Abort()
|
|
return
|
|
}
|
|
|
|
// 认证成功,继续
|
|
c.Set("username", username) // 将用户信息存储在 context 中
|
|
c.Next()
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
r := gin.Default()
|
|
|
|
// 公开路由
|
|
r.GET("/", func(c *gin.Context) {
|
|
c.JSON(200, gin.H{"message": "Public endpoint"})
|
|
})
|
|
|
|
// 需要认证的路由
|
|
r.GET("/protected", BasicAuth(), func(c *gin.Context) {
|
|
username := c.GetString("username")
|
|
c.JSON(200, gin.H{"message": "Hello " + username})
|
|
})
|
|
|
|
r.Run(":9999")
|
|
}
|