diff --git a/internal/pkg/middleware/auth/basic.go b/internal/pkg/middleware/auth/basic.go index 75e3425a..6c44e299 100644 --- a/internal/pkg/middleware/auth/basic.go +++ b/internal/pkg/middleware/auth/basic.go @@ -5,9 +5,6 @@ package auth import ( - "encoding/base64" - "strings" - "github.com/gin-gonic/gin" "github.com/marmotedu/component-base/pkg/core" "github.com/marmotedu/errors" @@ -33,9 +30,8 @@ func NewBasicStrategy(compare func(username string, password string) bool) Basic // AuthFunc defines basic strategy as the gin authentication middleware. func (b BasicStrategy) AuthFunc() gin.HandlerFunc { return func(c *gin.Context) { - auth := strings.SplitN(c.Request.Header.Get("Authorization"), " ", 2) - - if len(auth) != 2 || auth[0] != "Basic" { + username, password, ok := c.Request.BasicAuth() + if !ok { core.WriteResponse( c, errors.WithCode(code.ErrSignatureInvalid, "Authorization header format is wrong."), @@ -46,10 +42,7 @@ func (b BasicStrategy) AuthFunc() gin.HandlerFunc { return } - payload, _ := base64.StdEncoding.DecodeString(auth[1]) - pair := strings.SplitN(string(payload), ":", 2) - - if len(pair) != 2 || !b.compare(pair[0], pair[1]) { + if !b.compare(username, password) { core.WriteResponse( c, errors.WithCode(code.ErrSignatureInvalid, "Authorization header format is wrong."), @@ -60,7 +53,7 @@ func (b BasicStrategy) AuthFunc() gin.HandlerFunc { return } - c.Set(middleware.UsernameKey, pair[0]) + c.Set(middleware.UsernameKey, username) c.Next() }