MCPcopy
hub / github.com/gofiber/fiber / getSession

Method getSession

middleware/session/store.go:125–195  ·  view source on GitHub ↗

getSession retrieves a session based on the context. Parameters: - c: The Fiber context. Returns: - *Session: The session object. - error: An error if the session retrieval fails. Usage: sess, err := store.getSession(c) if err != nil { // handle error }

(c fiber.Ctx)

Source from the content-addressed store, hash-verified

123// // handle error
124// }
125func (s *Store) getSession(c fiber.Ctx) (*Session, error) {
126 var rawData []byte
127 var err error
128
129 id, ok := c.Locals(sessionIDContextKey).(string)
130 if !ok {
131 id = s.getSessionID(c)
132 }
133
134 selectedExtractor, hasExtractor := c.Locals(sessionExtractorContextKey).(extractors.Extractor)
135 if !hasExtractor {
136 selectedExtractor = extractors.Extractor{}
137 }
138
139 isFresh := false // Session is not fresh initially; only set to true if we generate a new ID
140
141 // Attempt to fetch session data if an ID is provided
142 if id != "" {
143 rawData, err = s.Storage.GetWithContext(c, id)
144 if err != nil {
145 return nil, err
146 }
147 if rawData == nil {
148 // Data not found, prepare to generate a new session
149 id = ""
150 }
151 }
152
153 // Generate a new ID if needed
154 if id == "" {
155 isFresh = true // The session is fresh if a new ID is generated
156 id = s.KeyGenerator()
157 c.Locals(sessionIDContextKey, id)
158 }
159
160 // Create session object
161 sess := acquireSession()
162
163 sess.mu.Lock()
164
165 sess.ctx = c
166 sess.config = s
167 sess.id = id
168 sess.isFresh = isFresh
169 sess.extractor = selectedExtractor
170
171 // Decode session data if found
172 if rawData != nil {
173 sess.data.Lock()
174 err := sess.decodeSessionData(rawData)
175 sess.data.Unlock()
176 if err != nil {
177 sess.mu.Unlock()
178 sess.Release()
179 return nil, fmt.Errorf("failed to decode session data: %w", err)
180 }
181 }
182

Callers 5

GetMethod · 0.95
Test_Session_ConcurrencyFunction · 0.95
initializeMethod · 0.80

Calls 14

getSessionIDMethod · 0.95
acquireSessionFunction · 0.85
decodeSessionDataMethod · 0.80
setAbsExpirationMethod · 0.80
isAbsExpiredMethod · 0.80
LocalsMethod · 0.65
GetWithContextMethod · 0.65
LockMethod · 0.65
UnlockMethod · 0.65
ErrorfMethod · 0.65
AddMethod · 0.65
ResetMethod · 0.65