是否有一个请求/验证规则会在意外输入的情况下引发错误?
Posted
技术标签:
【中文标题】是否有一个请求/验证规则会在意外输入的情况下引发错误?【英文标题】:Is there a request/validation rule that would throw an error in case of unexpected input? 【发布时间】:2021-11-10 07:32:02 【问题描述】:Request::only()
之类的东西在请求中有任何额外/意外字段时会引发错误?
例如:
$request->strictly(['username', 'password']);
如果 POST 请求包含“用户名”、“密码”和“foo”字段,会引发错误吗?
如果没有,手动执行此类验证的最佳方法是什么?
【问题讨论】:
【参考方案1】:您可以使用Macro 在请求类中创建自己的strictly
方法
AppServiceProvider.php
和 boot
方法里面添加这个方法
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
public function boot()
Request::macro('strictly', function(array $paramaters)
$array = array_diff(request()->keys(), $paramaters);
if (count($array) > 0)
throw ValidationException::withMessages(
collect($array)->map(function ($row)
return [$row => 'not needed'];
)->collapse()->all()
);
);
现在您可以在控制器或请求类中使用此方法
request()->strictly(['username', 'password']);
【讨论】:
谢谢!我认为它可以使用 array_diff() 来简化一点,比如if (count(array_diff(request()->keys(),$parameters)) > 0)) throw...
@YourCommonSense 你可以编辑这个答案。
@YourCommonSense 我更新了我的答案并抛出了一条消息以上是关于是否有一个请求/验证规则会在意外输入的情况下引发错误?的主要内容,如果未能解决你的问题,请参考以下文章
在 java 中验证证书会引发异常 - 无法找到请求目标的有效证书路径
是否可以在没有 tfs 服务器的情况下验证 vs2010 中的自定义代码/架构规则?
UIViewController 导航 - 在意外状态下完成导航转换。导航栏子视图树可能会损坏