세션
세션 미들웨어는 Fiber 프레임워크에서 세션 관리에 사용됩니다.
참고: 이 미들웨어는 Storage 패키지를 사용하여 통일된 인터페이스를 통해 다양한 데이터베이스를 지원합니다. 이 미들웨어의 기본 구성은 데이터를 메모리에 저장합니다. 다른 데이터베이스의 예제는 아래 예제를 참조해 주세요.
서명
func New(config ...Config) *Store
func (s *Store) RegisterType(i interface{})
func (s *Store) Get(c *fiber.Ctx) (*Session, error)
func (s *Store) Reset() error
func (s *Session) Get(key string) interface{}
func (s *Session) Set(key string, val interface{})
func (s *Session) Delete(key string)
func (s *Session) Destroy() error
func (s *Session) Regenerate() error
func (s *Session) Save() error
func (s *Session) Fresh() bool
func (s *Session) ID() string
func (s *Session) Keys() []string
참고: "interface{}" 값의 저장은 내장된 Go 타입으로 제한됩니다.
예시
Fiber 웹 프레임워크의 미들웨어 패키지를 가져옵니다.
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/session"
)
Fiber 애플리케이션을 초기화한 후, 다음 기능을 사용할 수 있습니다:
// 기본 구성으로 초기화
// 모든 애플리케이션 세션을 저장합니다
store := session.New()
app.Get("/", func(c *fiber.Ctx) error {
// 스토리지에서 세션을 가져옵니다
sess, err := store.Get(c)
if err != nil {
panic(err)
}
// 값 가져오기
name := sess.Get("name")
// 키/값 설정
sess.Set("name", "john")
// 모든 키 가져오기
keys := sess.Keys()
// 키 삭제
sess.Delete("name")
// 세션 삭제
if err := sess.Destroy(); err != nil {
panic(err)
}
// 이 세션에 대한 특정 만료 시간 설정
sess.SetExpiry(time.Second * 2)
// 세션 저장
if err := sess.Save(); err != nil {
panic(err)
}
return c.SendString(fmt.Sprintf("환영합니다 %v", name))
})
구성
속성 | 타입 | 설명 | 기본값 |
---|---|---|---|
Expiration | time.Duration |
허용된 세션 기간 | 24 * time.Hour |
Storage | fiber.Storage |
세션 데이터를 저장하는 스토리지 인터페이스 | memory.New() |
KeyLookup | string |
KeyLookup은 요청에서 세션 ID를 추출하는 데 사용되는 문자열입니다 | "cookie:session_id" |
CookieDomain | string |
쿠키의 도메인 | "" |
CookiePath | string |
쿠키의 경로 | "" |
CookieSecure | bool |
쿠키의 보안 여부 | false |
CookieHTTPOnly | bool |
쿠키의 HTTP 전용 여부 | false |
CookieSameSite | string |
SameSite 쿠키의 값 | "Lax" |
CookieSessionOnly | bool |
쿠키가 브라우저 세션에만 유효한지 여부를 결정합니다. true로 설정하면 Expiration 값은 무시됩니다. | false |
KeyGenerator | func() string |
세션 키를 생성하는 함수 | utils.UUIDv4 |
CookieName (deprecated) | string |
Deprecated: KeyLookup를 사용하세요. 세션의 이름 | "" |
기본 구성
var ConfigDefault = Config{
Expiration: 24 * time.Hour,
KeyLookup: "cookie:session_id",
KeyGenerator: utils.UUIDv4,
source: "cookie",
sessionName: "session_id",
}
상수
const (
SourceCookie Source = "cookie"
SourceHeader Source = "header"
SourceURLQuery Source = "query"
)
사용자 정의 스토리지/데이터베이스
storage 패키지에서 제공하는 스토리지를 사용할 수 있습니다.
storage := sqlite3.New() // github.com/gofiber/storage/sqlite3에서 가져옴
store := session.New(session.Config{
Storage: storage,
})