질문을 삭제하지 말아주세요.!
 
1
0
-1

안녕하세요.


route
...


Route::middleware('a')->group(function () {
	Route::middleware('b')->group(function () {
		...
	});
});


...
kernel
...


protected $middlewarePriority = [
	\App\Http\Middleware\a::class,
	\App\Http\Middleware\b::class,
];


...



위와 같이, a 미들웨어를 걸친 후, b 미들웨어로 향합니다.


이 때, a 미들웨어에서 생성한 쿠키를, b 미들웨어에서 읽을 수 있는 방법이 없을까요?

Cookie::queue()... 별 짓을 다해도 안되네요.


또... 아무도 모르겠지...

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      결론? 바로 접근하는 것은 불가능하다.


      some middleware
      ...
      
      
      $cookie = cookie()->make('some', 'foo');
      
      if ($request->expectsJson()) {
      	return response()->json([], 449)->withCookie($cookie);
      } // javascript -> status code == 499 => 재시도
      
      return redirect(url()->full());
      
      
      ...


      아휴

        CommentAdd your comment...
      1.  
        2
        1
        0

        약간 개념적으로 맞지 않는 질문같아서, 짧은 설명을 첨부합니다. cookie 를 만든다는건 response 의 header 부에 Set-Cookie: key=value 값으로 key, value 값을 셋팅한다는 의미입니다. 그러면, 그 response 를 받는 web browser 가 사용자의 피씨에 해당 쿠키를 생성하는 것이고요. 물론 내용을 plain text 로 지정하면 조작의 위험이 크므로, laravel 이 encryption 합니다. 

        browser 에서 그 이후에 요청을 보내면 요청의 header 부에 기존에 laravel 에서 지정한 key, value 값이 그대로 넘어와서 읽을 수 있습니다. 질문 내용처럼 server 에서 response 를 보내기 전에 cookie 를 설정하는 명령을 내린다음 바로 다음번 middleware 에서 읽을 수 없습니다. 이후 브라우저 request 의 header 에서 설정된 쿠키가 있는지 확인할 수 있습니다.

        1. 김영우

          답변 감사합니다... 클라이언트에 다녀오기 전에, 서버에서 헤더를 미리 생성해서 다른 곳에서 읽어내고 싶었던 것인데, 별 짓을 다해서 생성해봤자, 읽을 수가 없네요.

        CommentAdd your comment...