如何通过Laravel 4中的cookie发送CSRF令牌,而不是通过隐藏的输入字段

时间:2014-04-10 12:42:20

标签: php cookies laravel

我使用Laravel作为REST API - 在另一个域上与SPA通信。

我需要帮助将CSRF令牌发送到我的应用程序。

我无法在隐藏字段内回显它,因为我的SPA位于另一个域中。

我可以将CSRF令牌放在Cookie中吗?

我该怎么做?

我可以通过get请求发送它 - 但我不确定它是否安全。

注意:为了更清楚,我正在考虑在我的第一个Get请求中将令牌发送到cookie中。

谢谢!

1 个答案:

答案 0 :(得分:2)

只需使用功能csrf_token()即可创建Cookie。

$tok = Cookie::make('token', csrf_token(), 30);
return Response::make('tadaaam')->withCookie($tok);

或者像这样使用它来追加视图。

$view = View::make('home');
$tok = Cookie::make('token', csrf_token(), 30);
return Response::make($view)->withCookie($tok);

要验证您应该添加新过滤器。

Route::filter('csrfcookie', function()
{
    if (Session::token() != Cookie::get('token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});