refactor: extract sso method, adjust method positions

This commit is contained in:
weloe
2023-10-14 03:18:17 +08:00
parent 1395874370
commit 2fadcf9924
2 changed files with 27 additions and 20 deletions

View File

@@ -3,6 +3,7 @@ package config
// SignConfig sign config // SignConfig sign config
type SignConfig struct { type SignConfig struct {
SecretKey string SecretKey string
// nonce exist time
TimeStampDisparity int64 TimeStampDisparity int64
IsCheckNonce bool IsCheckNonce bool
} }

View File

@@ -67,7 +67,7 @@ func (s *SsoEnforcer) GetLoginId(ticket string) string {
if ticket == "" { if ticket == "" {
return "" return ""
} }
loginId := s.enforcer.GetAdapter().GetStr(s.spliceTicketSaveKey(ticket)) loginId := s.getLoginIdByTicket(ticket)
if loginId != "" && strings.Contains(loginId, ",") { if loginId != "" && strings.Contains(loginId, ",") {
split := strings.Split(loginId, ",") split := strings.Split(loginId, ",")
loginId = split[0] loginId = split[0]
@@ -75,6 +75,11 @@ func (s *SsoEnforcer) GetLoginId(ticket string) string {
return loginId return loginId
} }
func (s *SsoEnforcer) getLoginIdByTicket(ticket string) string {
loginId := s.enforcer.GetAdapter().GetStr(s.spliceTicketSaveKey(ticket))
return loginId
}
// GetTicket get ticket by loginId. // GetTicket get ticket by loginId.
func (s *SsoEnforcer) GetTicket(loginId string) string { func (s *SsoEnforcer) GetTicket(loginId string) string {
if loginId == "" { if loginId == "" {
@@ -90,7 +95,7 @@ func (s *SsoEnforcer) CheckTicket(ticket string) (string, error) {
// CheckTicketByClient check ticket by pointing client,return loginId. // CheckTicketByClient check ticket by pointing client,return loginId.
func (s *SsoEnforcer) CheckTicketByClient(ticket string, client string) (string, error) { func (s *SsoEnforcer) CheckTicketByClient(ticket string, client string) (string, error) {
id := s.enforcer.GetAdapter().GetStr(s.spliceTicketSaveKey(ticket)) id := s.getLoginIdByTicket(ticket)
if id == "" { if id == "" {
return "", nil return "", nil
} }
@@ -379,22 +384,7 @@ func (s *SsoEnforcer) saveTicket(ticket string, loginId string, client string) e
return s.enforcer.GetAdapter().SetStr(s.spliceTicketSaveKey(ticket), value, ticketTimeout) return s.enforcer.GetAdapter().SetStr(s.spliceTicketSaveKey(ticket), value, ticketTimeout)
} }
// saveTicketIndex save id-ticket. // delete ticket - id,client
func (s *SsoEnforcer) saveTicketIndex(ticket string, id string) error {
ticketTimeout := s.config.TicketTimeout
return s.enforcer.GetAdapter().SetStr(s.spliceTicketIndexKey(id), ticket, ticketTimeout)
}
// spliceTicketSaveKey splice ticket-id key.
func (s *SsoEnforcer) spliceTicketSaveKey(ticket string) string {
return s.enforcer.GetTokenConfig().TokenName + ":ticket:" + ticket
}
// spliceTicketIndexKey splice id-ticket key.
func (s *SsoEnforcer) spliceTicketIndexKey(id string) string {
return s.enforcer.GetTokenConfig().TokenName + ":id-ticket:" + id
}
func (s *SsoEnforcer) deleteTicket(ticket string) error { func (s *SsoEnforcer) deleteTicket(ticket string) error {
if ticket == "" { if ticket == "" {
return nil return nil
@@ -402,6 +392,17 @@ func (s *SsoEnforcer) deleteTicket(ticket string) error {
return s.enforcer.GetAdapter().DeleteStr(s.spliceTicketSaveKey(ticket)) return s.enforcer.GetAdapter().DeleteStr(s.spliceTicketSaveKey(ticket))
} }
// spliceTicketSaveKey splice ticket-id,client key.
func (s *SsoEnforcer) spliceTicketSaveKey(ticket string) string {
return s.enforcer.GetTokenConfig().TokenName + ":ticket:" + ticket
}
// saveTicketIndex save id-ticket.
func (s *SsoEnforcer) saveTicketIndex(ticket string, id string) error {
ticketTimeout := s.config.TicketTimeout
return s.enforcer.GetAdapter().SetStr(s.spliceTicketIndexKey(id), ticket, ticketTimeout)
}
func (s *SsoEnforcer) deleteTicketIndex(id string) error { func (s *SsoEnforcer) deleteTicketIndex(id string) error {
if id == "" { if id == "" {
return nil return nil
@@ -409,6 +410,11 @@ func (s *SsoEnforcer) deleteTicketIndex(id string) error {
return s.enforcer.GetAdapter().DeleteStr(s.spliceTicketIndexKey(id)) return s.enforcer.GetAdapter().DeleteStr(s.spliceTicketIndexKey(id))
} }
// spliceTicketIndexKey splice id-ticket key.
func (s *SsoEnforcer) spliceTicketIndexKey(id string) string {
return s.enforcer.GetTokenConfig().TokenName + ":id-ticket:" + id
}
// checkTimeStamp determine whether the gap between the timestamp and the current timestamp is within the allowable range. // checkTimeStamp determine whether the gap between the timestamp and the current timestamp is within the allowable range.
func (s *SsoEnforcer) checkTimeStamp(timestamp string) error { func (s *SsoEnforcer) checkTimeStamp(timestamp string) error {
parseInt, err := strconv.ParseInt(timestamp, 10, 64) parseInt, err := strconv.ParseInt(timestamp, 10, 64)
@@ -430,7 +436,7 @@ func (s *SsoEnforcer) isValidTimeStamp(timestamp int64) bool {
return allowDisparity == 1 || nowDisparity <= allowDisparity return allowDisparity == 1 || nowDisparity <= allowDisparity
} }
// checkNonce the same nonce can only be verified once. // checkNonce the same nonce can only be verified once, cannot be used again for a period of time after use
func (s *SsoEnforcer) checkNonce(nonce string) error { func (s *SsoEnforcer) checkNonce(nonce string) error {
if nonce == "" { if nonce == "" {
return errors.New("nonce is nil") return errors.New("nonce is nil")