Improve parseBearerToken().

This commit is contained in:
Gucheng Wang
2021-12-13 00:37:13 +08:00
parent 00ab156453
commit 0adb9b0047
2 changed files with 20 additions and 16 deletions

View File

@@ -63,11 +63,17 @@ func AutoSigninFilter(ctx *context.Context) {
return return
} }
//Bearer token // HTTP Bearer token
//headers: {"Authorization":accessToken} // Authorization: Bearer bearerToken
if claims, ok := parseBearer(ctx); ok { bearerToken := parseBearerToken(ctx)
if bearerToken != "" {
claims, err := object.ParseJwtToken(bearerToken)
if err != nil {
responseError(ctx, err.Error())
return
}
setSessionUser(ctx, fmt.Sprintf("%s/%s", claims.Owner, claims.Name)) setSessionUser(ctx, fmt.Sprintf("%s/%s", claims.Owner, claims.Name))
setSessionExpire(ctx, claims.ExpiresAt.Unix()) setSessionExpire(ctx, claims.ExpiresAt.Unix())
return
} }
} }

View File

@@ -97,19 +97,17 @@ func setSessionExpire(ctx *context.Context, ExpireTime int64) {
ctx.Input.CruSession.SessionRelease(ctx.ResponseWriter) ctx.Input.CruSession.SessionRelease(ctx.ResponseWriter)
} }
func parseBearer(ctx *context.Context) (*object.Claims, bool) { func parseBearerToken(ctx *context.Context) string {
bearer := ctx.Request.Header.Get("Authorization") header := ctx.Request.Header.Get("Authorization")
bearerList := strings.Split(bearer, " ") tokens := strings.Split(header, " ")
if len(bearerList) != 2 { if len(tokens) != 2 {
return nil, false return ""
} }
prefix := bearerList[0]
prefix := tokens[0]
if prefix != "Bearer" { if prefix != "Bearer" {
return nil, false return ""
} }
claims, err := object.ParseJwtToken(bearerList[1])
if err != nil { return tokens[1]
return nil, false
}
return claims, true
} }