仅针对单个方法删除csrf令牌 - Laravel

时间:2018-01-19 11:01:50

标签: laravel laravel-5 laravel-routing csrf-protection

我正在使用paytabs支付网关api。在该api中,必须提供重定向URL,以便在事务完成后,页面将自动重定向到您指定的重定向URL。网址是一个GET网址,但由于api的响应是POST类型,我无法使用获取网址。为了解决这个问题,我将该路由设为POST网址,但是通过使其成为post方法,我没有获得任何CSRF令牌。最后,我得到了这个问题。

TokenMismatchException in VerifyCsrfToken.php line 68:

我是否有办法仅为单个POST网址解除CSRF令牌功能?

- 建议 - 我根据你的建议做了这个

class VerifyCsrfToken extends Middleware
{
    protected $except = [
        'signup/complete',
    ];
}

现在正在

Class 'Middleware' not found

3 个答案:

答案 0 :(得分:5)

来自the docs

  

通常,您应将这些类型的路由放在RouteServiceProvider应用于routes/web.php文件中所有路由的Web中间件组之外。但是,您也可以通过将URI添加到VerifyCsrfToken中间件的$ except属性来排除路由:

class VerifyCsrfToken extends Middleware
{
    protected $except = [
        'stripe/*',
        'http://example.com/foo/bar',
        'http://example.com/foo/*',
    ];
}

答案 1 :(得分:0)

你可以在csrf中间件中例外。转到app / http / Middleware / VirefyCsrfToken.php

grep -w "H2" <file name>

答案 2 :(得分:0)

关于如何使用本地主机 在您的项目文件夹/app/http/middleware/VerifyCsrfToken.php编辑

import hashlib 
hash_object = hashlib.sha256(<FEEDPARSER_RESPONSE>)
hex_dig = hash_object.hexdigest()