func (p *AuthComponent) CheckAuth(payload spirit.Payload) (result interface{}, err error) { if result, err = payload.GetData(); err != nil { return } var contexts interface{} var headerExist bool if contexts, headerExist = payload.GetContext(CtxHttpHeaders); !headerExist { err = ErrAuthorizationHeaderNotExist.New() return } if headers, ok := contexts.(map[string]interface{}); !ok { err = ErrAuthorizationHeaderNotExist.New() return } else if v, exist := headers["Authorization"]; !exist { err = ErrAuthorizationHeaderNotExist.New() return } else if authVal, ok := v.(string); !ok { err = ErrAuthorizationHeaderNotExist.New() return } else { authVal = strings.TrimLeft(authVal, "Basic ") var val []byte if val, err = base64.StdEncoding.DecodeString(authVal); err != nil { return } account := strings.Split(string(val), ":") if len(account) != 2 { err = ErrAuthorizationHeaderFmtError.New() return } if err = p.Auth.CheckAuth(account[0], account[1]); err != nil { return } } return }