【问题标题】:accessing session from the web middleware to the api middleware in laravel 5.3在 laravel 5.3 中从 web 中间件访问 api 中间件的会话
【发布时间】:2017-05-18 14:55:48
【问题描述】:

我想在服务器中设置一个会话并让它随时可用。我正在使用 Laravel 5.3,我的一个控制器上有以下代码:

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

然后我使用名为 axios 的包发出了 Ajax 请求

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.phpapi middleware

所以我想修改一下这个问题,有没有办法从web middleware 访问会话到api middleware

对不起,我的错。

【问题讨论】:

  • 要明确的是纯粹是让csrf_token 到 vue?
  • 不是,是获取设置的session的值。
  • 我也没有使用 vue 我正在使用 react 但这似乎并不重要,因为这里的问题是 laravel。
  • 我只是假设 vue 开箱即用。我的错!
  • 没关系,我在第一期就知道哪里出了问题,我没有仔细考虑,你能回答后续问题吗?

标签: ajax session laravel-5.3


【解决方案1】:

对不起,我没仔细看,原因是会话设置在web中间件下的web.php上,而处理ajax请求的控制器在api.php下api 中间件。

所以我想修改一下问题,有没有办法从web中间件访问到api中间件的会话?

对不起,我的错。

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 2017-03-06
    • 2012-02-25
    • 2021-05-15
    • 1970-01-01
    • 2017-03-27
    • 2015-02-07
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多