StorePostRequest的authorize()函数行为不符预期,是否为理解误区?
这不是bug,是Laravel的默认设计逻辑,你的理解存在偏差:
自定义请求类里的authorize()方法和rules()是两个独立的校验环节:
rules()负责校验请求数据的格式、内容合法性authorize()负责校验请求发起者是否有权执行当前操作
Laravel默认把authorize()的返回值设为false,是出于安全考虑——默认拒绝所有未明确授权的请求,避免匿名用户随意调用接口。
你希望所有人都能通过POST请求提交数据,也就是允许匿名访问,那把authorize()的返回值改为true就是完全正确的做法,这完全符合Laravel的设计意图。
如果之后你需要对接口做权限限制(比如仅登录用户可提交),只需要在authorize()里编写对应逻辑即可,比如:
public function authorize() { return auth()->check(); // 仅登录用户可通过权限校验 }
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

