关于composer包注册路由未经过csrf验证的问题
在使用第三方包的时候,发现一个点,就是它注册的post路由是没有经过csrf验证的。
具体注册代码如下:
if (!$this->app->routesAreCached()) {
$router->group(array_merge(['namespace' => __NAMESPACE__], config('ueditor.route.options', [])), function ($router) {
$router->any(config('ueditor.route.name', '/ueditor/server'), 'UEditorController@serve');
});
}
这里注册的是any,也就是说包含了post,想象中laravel框架应该会对所有post路由进行csrf验证才对,后来发现不是的,csrf中间件只会验证写在web.php里的路由,对于其他方式注册的路由,post是不会进行csrf验证的。想要手动加上post的csrf验证可以自己在web.php里面重新定义下想要验证的路由,比如这样:
Route::any('/ueditor/server', '\Overtrue\LaravelUEditor\UEditorController@serve');
这样就会覆盖掉composer包里的路由,走web.php的中间件验证