【CSRF中间件】
学习版本5.2时,只有在路由中配置了CSRF的路由规则,才会查看表单是否带有CSRF_FIELD。
但是使用版本5.4时,发现不在路由中做任何配置,只要是表单,都会验证CSRF_field。
请问各位大佬,版本5.4是在哪个位置控制CSRF检查的?如何设置才能像5.2那样只对某些路由起效?谢谢
@学院君 按你说的不管用:
学习版本5.2时,只有在路由中配置了CSRF的路由规则,才会查看表单是否带有CSRF_FIELD。
但是使用版本5.4时,发现不在路由中做任何配置,只要是表单,都会验证CSRF_field。
@学院君 按你说的不管用:
8 Comments
是因为5.3 开始定义在 web.php 路由文件中的路由默认都会经过 VerifyCsrfToken 中间件进行过滤 目前该中间件仅支持白名单 如果要让某些路由不校验 需要在 VerifyCsrfToken 中间件的 $except 属性中配置
谢谢!我试了不管用
你确定你post提交的路由是create不是save?
是create,报异常的页面地址是create,而且我没写form的action。 难道这框架带缓存的?导致我写到VerifyCsrfToken中的except没起效?
student前面加个/试试
加/不行。 我在VerifyCsrfToken类中,打印了一下,发现except属性空。见上图
你加错地方了。。。加到这个子类里面:\App\Http\Middleware\VerifyCsrfToken,你加到父级里面,当然没有效果了,被子类覆盖了
你说的对!谢谢!