繁体   English   中英

有没有办法从Laravel 5中的包中排除CSRF保护路由?

[英]Is there a way to exclude a route from CSRF protection from within a package in Laravel 5?

我知道VerifyCsrfToken中间件( app/Http/Middleware/VerifyCsrfToken.php )的$except属性,但我正在寻找一种方法来从我的包中做类似的事情(所以安装它的用户不必修改他们的VerifyCsrfToken.php用于我的工作路线)。

我能够在我的包上定义路由,但我不知道如何从默认中间件中排除其中一个(或多个)。 我试过在我自己的包装上扩展Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken而没有运气。

不,那里没有。 app/Http/Kernel.php类的$middleware属性中提供中间件时始终执行。

这是一件好事。 您希望让开发人员完全控制是否要在其应用程序中启用安全检查。

如果您确实需要路由上的异常,则可以简单地要求手动将该异常添加到VerifyCsrfToken类。

据我所知,服务容器无法访问VerifyCsrfToken类中的$except数组。 即使您可以找到创建中间件实例的方法,内核也只会创建一个新的中间件类实例。 因为异常列表不是静态的,所以不可能改变它。

是的,它实际上非常简单,也包含在这里的文档中,但为了简单起见,这里提供的答案供您参考:

    <?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'stripe/*',
    ];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM