我想在服务器上设置一个会话,并随时可用。我正在使用Laravel 5.3,我的一个控制器上有以下代码:
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
,而处理ajax请求的控制器在的api.php
下方api middleware
。
所以,我想修改的问题,有没有从访问会话的方式web middleware
向api middleware
?
对不起这是我的错。
抱歉,我没有仔细看,原因是因为会话是在Web中间件下的web.php上设置的,而处理ajax请求的控制器在api.php中是在api中间件下的。
因此,我想修正这个问题,是否有一种方法可以将会话从Web中间件访问到api中间件?
对不起这是我的错。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句