如何在vue 2 app和laravel中创建和匹配CSRF令牌

时间:2017-07-02 14:29:26

标签: php laravel vuejs2

我没有使用laravel默认提供的vue 2设置。相反,我有vue应用程序和laravel api后端的两个分隔文件夹。 vue应用程序位于laravel项目文件夹之外。

在这种情况下,我该如何实施CSRF?

这就是我想要做的事情请告诉我这是否可以正常工作或有更好的方法可以做... 1.在vue应用程序中使用一些随机长字符串设置cookie。 2.在每个api调用中,确保正在发送cookie。 3.在laravel后端,从请求中获取此令牌。 4.从cookie本身获取令牌。 5.匹配两个cookie,如果匹配则假设CSRF有效..

提前致谢..

1 个答案:

答案 0 :(得分:1)

我很困惑,但我通过询问社区找到答案。

只需查看Laravel CSRF document,框架将XSRF-TOKEN存储为Cookie的关键字。您需要做的是从cookie中获取XSRF-TOKEN,然后将令牌设置为带有X-XSRF-TOKEN: key_from_cookie的标头的一部分,Laravel将decrypt the key作为CSRF令牌照常使用。

照亮/粉底/ HTTP /中间件/ VerifyCsrfToken.php
/**
 * Get the CSRF token from the request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return string
 */
protected function getTokenFromRequest($request)
{
    $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
    if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
        $token = $this->encrypter->decrypt($header);
    }
    return $token;
}