Php 我的Laravel测试返回的是302重定向,而不是403禁止状态
我有一个名为Php 我的Laravel测试返回的是302重定向,而不是403禁止状态,php,laravel,testing,Php,Laravel,Testing,我有一个名为Type的模型,它有一个title字段和一个pretty\u slug字段 我有一个测试,检查用户是否无法更新类型实例: 我认为问题在于'levels.update'路由可能受到auth中间件的保护 由于没有用户登录,auth中间件将尝试重定向到登录页面。我喜欢IGP的答案。但如果不是这样,您可能需要检查主机配置。Apache或Nginx,或者您正在使用的任何东西。可能是路由正在通过http调用,而您的服务器正在重定向到https,或者是visa重定向到https。多亏了@Aless
Type
的模型,它有一个title
字段和一个pretty\u slug
字段
我有一个测试,检查用户是否无法更新类型实例:
我认为问题在于'levels.update'
路由可能受到auth
中间件的保护
由于没有用户登录,auth
中间件将尝试重定向到登录页面。我喜欢IGP的答案。但如果不是这样,您可能需要检查主机配置。Apache或Nginx,或者您正在使用的任何东西。可能是路由正在通过http调用,而您的服务器正在重定向到https,或者是visa重定向到https。多亏了@Aless55,我发现了问题:是验证了我的类型
模型,阻止了我更新实例
我查看了StoreType
文件,其中我有:
“订单”=>“必需”|数字”,
这意味着需要订单
字段。但是当我尝试调用类型.update
路由时,我没有包括该字段
一个解决方案是将该字段设置为可选字段。但我最终在测试中包含了order
字段:
$response=$this->put(路由('types.update')[
'pretty_slug'=>$type->pretty_slug,
“title'=>“Alex新类型”,
“顺序”=>1,
]));
你能告诉我们管制员和路线吗?@Aless55我已经更新了帖子。正如您所看到的,对于类型
和级别
模型,控制器方法和路由结构都是相同的。您确定authorize()工作正常吗?实际上@ales55我查看了存储类型
文件,得到了所需的“订单”=>“数字”
。我将其更改为'order'=>'numeric',
,这样就不需要顺序了。而且…它起作用了。似乎当我尝试调用类型.update
时,我没有包含顺序
字段,因此它可能重定向到同一个表单。我很高兴您发现了问题,有时小事情占用了级别的大部分时间。update
工作正常。导致问题的是类型.update
。并且没有为这些路由启用auth
中间件。