Управление сессиями
SessionManager предоставляет потокобезопасное хранилище Cookie и заголовков запросов, используемое внутри DomainClient.
NewSessionManager
func NewSessionManager(config ...*SessionConfig) (*SessionManager, error)Создаёт менеджер сессий.
sm, err := httpc.NewSessionManager()
// С конфигурацией
cfg := httpc.DefaultSessionConfig()
cfg.CookieSecurity = httpc.StrictCookieSecurityConfig()
sm, err := httpc.NewSessionManager(cfg)SessionConfig
type SessionConfig struct {
CookieSecurity *CookieSecurityConfig
}| Поле | Тип | Описание |
|---|---|---|
CookieSecurity | *CookieSecurityConfig | Конфигурация проверки безопасности Cookie, nil означает без проверки |
func DefaultSessionConfig() *SessionConfigВозвращает конфигурацию по умолчанию (без проверки безопасности Cookie).
Управление заголовками
SetHeader
func (s *SessionManager) SetHeader(key, value string) errorУстанавливает заголовок сессии. Все последующие запросы будут автоматически его содержать. Проверяет корректность ключа и значения заголовка.
err := sm.SetHeader("Authorization", "Bearer "+token)SetHeaders
func (s *SessionManager) SetHeaders(headers map[string]string) errorМассовая установка заголовков сессии.
err := sm.SetHeaders(map[string]string{
"Authorization": "Bearer " + token,
"Accept": "application/json",
})DeleteHeader
func (s *SessionManager) DeleteHeader(key string)Удаляет указанный заголовок сессии.
ClearHeaders
func (s *SessionManager) ClearHeaders()Очищает все заголовки сессии.
GetHeaders
func (s *SessionManager) GetHeaders() map[string]stringВозвращает копию всех заголовков сессии.
Управление Cookie
SetCookie
func (s *SessionManager) SetCookie(cookie *http.Cookie) errorУстанавливает Cookie сессии. Проверяет корректность Cookie, а при наличии CookieSecurity также проверяет атрибуты безопасности.
err := sm.SetCookie(&http.Cookie{
Name: "session",
Value: "abc123",
Secure: true,
HttpOnly: true,
})SetCookies
func (s *SessionManager) SetCookies(cookies []*http.Cookie) errorМассовая установка Cookie.
DeleteCookie
func (s *SessionManager) DeleteCookie(name string)Удаляет Cookie по имени.
ClearCookies
func (s *SessionManager) ClearCookies()Очищает все Cookie.
GetCookies
func (s *SessionManager) GetCookies() []*http.CookieВозвращает копию всех Cookie.
GetCookie
func (s *SessionManager) GetCookie(name string) *http.CookieПолучает копию Cookie по имени, возвращает nil если не найден.
Безопасность Cookie
SetCookieSecurity
func (s *SessionManager) SetCookieSecurity(config *CookieSecurityConfig)Обновляет конфигурацию проверки безопасности Cookie. Влияет на все последующие вызовы SetCookie.
sm.SetCookieSecurity(httpc.StrictCookieSecurityConfig())UpdateFromResult
func (s *SessionManager) UpdateFromResult(result *Result)Обновляет Cookie сессии из результата запроса. Небезопасные Cookie молча пропускаются.
UpdateFromCookies
func (s *SessionManager) UpdateFromCookies(cookies []*http.Cookie)Обновляет Cookie сессии из среза Cookie.
См. также
- Доменный клиент - справочник по DomainClient
- Доменный клиент и сессии - руководство по использованию
- Интерфейсы - справочник по интерфейсу DomainClienter