1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package sessions
- import (
- "time"
- "github.com/kataras/iris/context"
- "github.com/google/uuid"
- )
- const (
- // DefaultCookieName the secret cookie's name for sessions
- DefaultCookieName = "irissessionid"
- )
- type (
- // Config is the configuration for sessions. Please read it before using sessions.
- Config struct {
- // Cookie string, the session's client cookie name, for example: "mysessionid"
- //
- // Defaults to "irissessionid".
- Cookie string
- // CookieSecureTLS set to true if server is running over TLS
- // and you need the session's cookie "Secure" field to be set true.
- // Defaults to false.
- CookieSecureTLS bool
- // AllowReclaim will allow to
- // Destroy and Start a session in the same request handler.
- // All it does is that it removes the cookie for both `Request` and `ResponseWriter` while `Destroy`
- // or add a new cookie to `Request` while `Start`.
- //
- // Defaults to false.
- AllowReclaim bool
- // Encoding should encodes and decodes
- // authenticated and optionally encrypted cookie values.
- //
- // Defaults to nil.
- Encoding context.SecureCookie
- // Expires the duration of which the cookie must expires (created_time.Add(Expires)).
- // If you want to delete the cookie when the browser closes, set it to -1.
- //
- // 0 means no expire, (24 years)
- // -1 means when browser closes
- // > 0 is the time.Duration which the session cookies should expire.
- //
- // Defaults to infinitive/unlimited life duration(0).
- Expires time.Duration
- // SessionIDGenerator can be set to a function which
- // return a unique session id.
- // By default we will use a uuid impl package to generate
- // that, but developers can change that with simple assignment.
- SessionIDGenerator func(ctx *context.Context) string
- // DisableSubdomainPersistence set it to true in order dissallow your subdomains to have access to the session cookie
- //
- // Defaults to false.
- DisableSubdomainPersistence bool
- }
- )
- // Validate corrects missing fields configuration fields and returns the right configuration
- func (c Config) Validate() Config {
- if c.Cookie == "" {
- c.Cookie = DefaultCookieName
- }
- if c.SessionIDGenerator == nil {
- c.SessionIDGenerator = func(*context.Context) string {
- id, _ := uuid.NewRandom()
- return id.String()
- }
- }
- return c
- }
|