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

Jul*_* J. 6 php package laravel-routing laravel-5.1

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

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

Mar*_*let 0

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

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

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

据我所知,服务容器无法访问类$except中的数组。VerifyCsrfToken即使您可以找到创建中间件实例的方法,内核也只会创建中间件类的新实例。由于例外列表不是静态的,因此无法更改。