如何添加csrf令牌ID redirect() - >动作

时间:2017-10-17 15:54:09

标签: laravel csrf

我有以下代码块:

 return redirect()->action('mycontroller@myfunction',
              [
                  'data0' => $request->data0,
                  'data1' => $request->data1,
                  'data2' => $request->data2,
                  'data3' => $request->data3,

]);

显示错误: MethodNotAllowedHttpException 可能是因为csrf令牌未通过此路由传递。

Route::post('congrats', 'mycontroller@myfunction');

我不希望数据0,数据1等值显示在网址中,这就是我希望它成为POST的原因。

如何在重定向操作上传递csrf令牌?还有其他方法吗?例如,使用GET但隐藏特定数据?

1 个答案:

答案 0 :(得分:1)

修改此类VerifyCsrfToken课程,以禁用对路线的验证

  protected $except_urls = [
        'contact/create',
        'contact/update',
        ...
    ];

public function handle($request, Closure $next)
{
    $regex = '#' . implode('|', $this->except_urls) . '#';

    if ($this->isReading($request) || $this->tokensMatch($request) || preg_match($regex, $request->path()))
    {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

更改内核以指向新的中间件:

protected $middleware = [
...

    'App\Http\Middleware\VerifyCsrfToken',
];

source

修改

在laravel docs中

将此添加到VerifyCsrfToken

 protected $except = [
        'stripe/*',
    ];