【问题标题】:How to add csrf token id redirect()->action如何添加 csrf 令牌 id redirect()->action
【发布时间】:2018-03-29 09:21:01
【问题描述】:

我有以下代码块:

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

]);

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

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

我不希望 data0、data1 等值显示在 url 中,所以我希望它是一个 POST。

如何在重定向操作中传递 csrf 令牌?有没有替代方法?例如使用 GET 但隐藏特定数据?

【问题讨论】:

  • 如何将数据刷新到会话并让它们在您重定向到的操作中可用?

标签: laravel csrf


【解决方案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 文档中

将此添加到VerifyCsrfToken

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

【讨论】:

  • 有没有不编辑VerifyCsrfToken或其他任何东西的解决方案?
  • 您可以禁用验证 Csrf 令牌,然后为所有其他路由创建一个路由组
猜你喜欢
  • 1970-01-01
  • 2018-10-08
  • 2016-09-19
  • 2018-09-22
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
相关资源
最近更新 更多