这是我的剧本: -
if (!isset($request->security_token))
{
// Provide security token
$error = TRUE;
$err_message[] = Lang::get('caption_validation_error.ser_valid_security_token.value');
$err_validation[] = Lang::get('caption_validation_error.ser_valid_security_token.value').' [security_token]';
}
这意味着,如果参数未被"发送",则将触发验证。但是,如果一个参数为"空白"如果发送了值,则不得触发验证。
但是,当我通过POSTMAN应用程序点击api时,带有空白值的security_token进入!isset验证。
我做错了什么?
答案 0 :(得分:0)
这并不是很明显为什么它是这样的,因为乍一看似乎很奇怪。但是,如果您对Laravel了解更多,并且查看app/Http/Kernel.php
文件,您会在那里看到:
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
从名称中可以找到将空字符串转换为null。因此,在您发送空参数的情况下,它被视为null
,因此!isset($null)
将为真。
所以你有两个选择:
假设您只想在根本不发送参数而不是
的情况下触发此验证if (!isset($request->security_token))
你可以使用例如
if (!$request->has('security_token'))
显然它并不完全相同 - 如果您现在发送此令牌并将其设置为null
它仍然无法执行但我相信当您现在知道什么是使用这个空字符串,您现在可以根据需要进行调整。