mirror of
https://github.com/casdoor/casdoor.git
synced 2025-09-07 11:00:28 +08:00
Improve parseBearerToken().
This commit is contained in:
@@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user