File tree 2 files changed +16
-23
lines changed
2 files changed +16
-23
lines changed Original file line number Diff line number Diff line change 3
3
namespace App \Middleware ;
4
4
5
5
use Closure ;
6
+ use Symfony \Component \HttpFoundation \Cookie ;
6
7
7
8
class StartSession
8
9
{
@@ -16,21 +17,31 @@ class StartSession
16
17
*/
17
18
public function handle ($ request , Closure $ next , $ guard = null )
18
19
{
20
+ $ container = \App::getInstance ();
21
+
19
22
if (session_status () == PHP_SESSION_NONE ) {
20
23
// In order to maintain the session between requests, we need to populate the
21
24
// session ID from the supplied cookie
22
- $ cookieName = \App:: getInstance () ['session ' ]->getName ();
25
+ $ cookieName = $ container ['session ' ]->getName ();
23
26
24
27
if (isset ($ _COOKIE [$ cookieName ])) {
25
28
if ($ sessionId = $ _COOKIE [$ cookieName ]) {
26
- \App:: getInstance () ['session ' ]->setId ($ sessionId );
29
+ $ container ['session ' ]->setId ($ sessionId );
27
30
}
28
31
}
29
32
30
33
// Boot the session
31
- \App:: getInstance () ['session ' ]->start ();
34
+ $ container ['session ' ]->start ();
32
35
}
33
36
34
- return $ next ($ request );
37
+ $ response = $ next ($ request );
38
+
39
+ $ response ->headers ->setCookie (new Cookie (
40
+ $ container ['session ' ]->getName (), $ container ['session ' ]->getId (),
41
+ ));
42
+
43
+ $ container ['session ' ]->save ();
44
+
45
+ return $ response ;
35
46
}
36
47
}
Original file line number Diff line number Diff line change 161
161
162
162
// Global middlewares
163
163
$ globalMiddleware = [
164
+ \App \Middleware \StartSession::class,
164
165
];
165
166
166
167
// Array middlewares
180
181
// Create a request from server variables
181
182
$ request = Request::capture ();
182
183
183
- // In order to maintain the session between requests, we need to populate the
184
- // session ID from the supplied cookie
185
- $ cookieName = $ container ['session ' ]->getName ();
186
-
187
- if (isset ($ _COOKIE [$ cookieName ])) {
188
- if ($ sessionId = $ _COOKIE [$ cookieName ]) {
189
- $ container ['session ' ]->setId ($ sessionId );
190
- }
191
- }
192
-
193
- // Boot the session
194
- $ container ['session ' ]->start ();
195
-
196
184
// Dispatching the request:
197
185
// When it comes to dispatching the request, you have two options:
198
186
// a) you either send the request directly through the router
210
198
return $ router ->dispatch ($ request );
211
199
});
212
200
213
- $ response ->headers ->setCookie (new Cookie (
214
- $ container ['session ' ]->getName (), $ container ['session ' ]->getId (),
215
- ));
216
-
217
- $ container ['session ' ]->save ();
218
-
219
201
// Send the response back to the browser
220
202
$ response ->send ();
221
203
You can’t perform that action at this time.
0 commit comments