2017-01-04 1 views
1

서버에서 세션을 설정하고 언제든지 사용할 수있게하려고합니다. 난 내 컨트롤러 중 하나에 다음 코드를 한 Laravel 5.3을 사용하고 있습니다 : 웹 미들웨어에서 laravel 5.3의 API 미들웨어 세션에 액세스

Session::set('csrf_token', str_random(72)); 
return view('index', [ 
    'session' => $session, 
    'csrf_token' => Session::get('csrf_token') 
]); 

다음 나는 컨트롤러입니다 axios

axios.post('to-that-route', 'some-data') 
    .then(response => console.log(response)) 
    .catch(err => console.log(err)); 

내 문제라는 패키지를 사용하여 Ajax 요청을 만든 그

return response()->json(var_dump(Session::get('csrf_token'))); 

나에게 null을 줄 것이라고,이 아약스 요청을 처리, 사실이 그것을, 난 그냥 설정 한 세션을 모르는 것 같다 session csrf_token에 대해 알지 못한다는 것을 의미합니다. 어떻게해야합니까?

편집 : 이것에 대해 죄송

, 내가 밀접하게보고되지 않은

:

public function handler(Request $request) { 
    // set the session 
    $request->session()->put('csrf_token', str_rand(72)); 
} 


// the controller that handles the ajax request 
public function handler(Request $request) { 
    return response()->json(var_dump($request->session->get('csrf_token'))); 
} 

이 나에게 Session store not set on request.

편집이 말하는 오류를 주었다

나는이 일을 시도 그 이유는 세션이 web.php (web middleware) 아래에 설정되었고, 아약스 r을 처리하는 컨트롤러 equest는 api.php에 있으며 api middleware에 속합니다.

그래서 질문을 수정하려면 web middleware에서 api middleware으로 세션에 액세스하는 방법이 있습니까?

죄송합니다.

+0

'csrf_token'을보기 만하면됩니다. –

+0

아니요, 설정된 세션의 값을 가져 오는 것입니다. –

+0

또한 ** vue **를 사용하고 있지 않습니다. ** react **를 사용하고 있습니다. 그러나 여기에 문제가 있기 때문에 중요하지는 않습니다. laravel. –

답변

0

죄송합니다. 세션이 웹 미들웨어 아래에있는 web.php에 설정되어 있고, ajax 요청을 처리하는 컨트롤러가 api.php에 있습니다. API 미들웨어.

그래서 질문을 수정하고 싶습니다. 웹 미들웨어에서 API 미들웨어로 세션에 액세스하는 방법이 있습니까?

죄송합니다.

관련 문제