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

Function NewWithStore

middleware/session/middleware.go:82–123  ·  view source on GitHub ↗

NewWithStore creates session middleware with an optional custom store. Parameters: - config: Variadic parameter to override default config. Returns: - fiber.Handler: The Fiber handler for the session middleware. - *Store: The session store. Usage: handler, store := session.NewWithStore()

(config ...Config)

Source from the content-addressed store, hash-verified

80//
81// handler, store := session.NewWithStore()
82func NewWithStore(config ...Config) (fiber.Handler, *Store) {
83 registerLogContextTagsOnce.Do(registerLogContextTags)
84
85 cfg := configDefault(config...)
86
87 if cfg.Store == nil {
88 cfg.Store = NewStore(cfg)
89 }
90
91 handler := func(c fiber.Ctx) error {
92 if cfg.Next != nil && cfg.Next(c) {
93 return c.Next()
94 }
95
96 // Acquire session middleware
97 m := acquireMiddleware()
98 if err := m.initialize(c, &cfg); err != nil {
99 releaseMiddleware(m)
100 handleSessionError(c, cfg.ErrorHandler, err)
101 return nil
102 }
103
104 stackErr := c.Next()
105
106 m.mu.RLock()
107 isDestroyed := m.isDestroyed
108 m.mu.RUnlock()
109
110 if !isDestroyed {
111 m.saveSession()
112 } else {
113 // saveSession is skipped for destroyed sessions, so the session must
114 // be returned to the pool here.
115 releaseSession(m.Session)
116 }
117
118 releaseMiddleware(m)
119 return stackErr
120 }
121
122 return handler, cfg.Store
123}
124
125var registerLogContextTagsOnce sync.Once
126

Calls 10

NewStoreFunction · 0.85
acquireMiddlewareFunction · 0.85
releaseMiddlewareFunction · 0.85
handleSessionErrorFunction · 0.85
releaseSessionFunction · 0.85
initializeMethod · 0.80
saveSessionMethod · 0.80
configDefaultFunction · 0.70
DoMethod · 0.65
NextMethod · 0.65