Php 是否有办法从Laravel 5中的包装中排除CSRF保护中的路线?
我知道Php 是否有办法从Laravel 5中的包装中排除CSRF保护中的路线?,php,package,laravel-5.1,laravel-routing,Php,Package,Laravel 5.1,Laravel Routing,我知道VerifyCsrfToken中间件(app/Http/middleware/VerifyCsrfToken.php)的$except属性,但我正在寻找一种从我的软件包中执行类似操作的方法(因此安装它的用户不必为我的工作路线修改VerifyCsrfToken.php) 我可以在包上定义路由,但我不知道如何从默认中间件中排除其中一个(或多个)。我尝试在我自己的软件包上扩展illumb\Foundation\Http\Middleware\VerifyCsrfToken,但运气不好。是的,它实
VerifyCsrfToken
中间件(app/Http/middleware/VerifyCsrfToken.php
)的$except
属性,但我正在寻找一种从我的软件包中执行类似操作的方法(因此安装它的用户不必为我的工作路线修改VerifyCsrfToken.php
)
我可以在包上定义路由,但我不知道如何从默认中间件中排除其中一个(或多个)。我尝试在我自己的软件包上扩展
illumb\Foundation\Http\Middleware\VerifyCsrfToken
,但运气不好。是的,它实际上非常简单,也包含在所找到的文档中,但为了简单起见,这里提供了答案供您参考:
<?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/*',
];
}
不,没有。中间件总是在
app/Http/Kernel.php
类的$Middleware
属性中提供时执行
这是一件好事。您希望让开发人员完全控制他们是否希望在应用程序中启用安全检查
如果您确实需要路由上的异常,只需请求手动将异常添加到VerifyCsrfToken
类
据我所知,服务容器无法访问
VerifyCsrfToken
类中的$except
数组。即使您可以找到创建中间件实例的方法,内核也只会创建中间件类的新实例。因为异常列表不是静态的,所以不可能改变它。我的问题的答案似乎是“不,没有办法”。查看(带有需要绕过中间件的post路由的内部包),您需要为每个应用手动添加到app/Http/middleware/VerifyCsrfToken.php的路由。如果你问我很不方便,但我想没有别的办法了。我感觉到你的痛苦。我我探索了许多变通方法,其中一种可能对您有效,但我怀疑让用户修改VerifyCsrfToken
仍然是唯一可行的解决方案。正如我在问题上所说的,我知道这一点,但我正在寻找在包中实现这一点的方法,因此,我不必要求我的用户再做一件事来安装我的软件包。