fix: enableMultiLogin configuration does not take effect (#5819)

This commit is contained in:
hongming
2023-07-06 18:04:51 +08:00
committed by GitHub
parent 0fe9fb48b4
commit a64e573c04
3 changed files with 7 additions and 5 deletions

View File

@@ -455,6 +455,11 @@ func (h *handler) passwordGrant(provider, username string, password string, req
}
func (h *handler) issueTokenTo(user user.Info) (*oauth.Token, error) {
if !h.options.MultipleLogin {
if err := h.tokenOperator.RevokeAllUserTokens(user.GetName()); err != nil {
return nil, err
}
}
accessToken, err := h.tokenOperator.IssueTo(&token.IssueRequest{
User: user,
Claims: token.Claims{TokenType: token.AccessToken},
@@ -471,7 +476,6 @@ func (h *handler) issueTokenTo(user user.Info) (*oauth.Token, error) {
if err != nil {
return nil, err
}
result := oauth.Token{
AccessToken: accessToken,
// The OAuth 2.0 token_type response parameter value MUST be Bearer,

View File

@@ -129,9 +129,7 @@ func (t *tokenOperator) tokenCacheValidate(username, token string) error {
if exist, err := t.cache.Exists(key); err != nil {
return err
} else if !exist {
err = errors.New("token not found in cache")
klog.V(4).Info(fmt.Errorf("%s: %s", err, token))
return err
return errors.New("token not found in cache")
}
return nil
}

View File

@@ -92,7 +92,7 @@ func (s *inMemoryCache) cleanInvalidToken() {
func (s *inMemoryCache) Keys(pattern string) ([]string, error) {
// There is a little difference between go regexp and redis key pattern
// In redis, * means any character, while in go . means match everything.
pattern = strings.Replace(pattern, "*", ".", -1)
pattern = strings.Replace(pattern, "*", ".*", -1)
re, err := regexp.Compile(pattern)
if err != nil {