【问题标题】:Stop Laravel password validation if username or email is empty如果用户名或电子邮件为空,则停止 Laravel 密码验证
【发布时间】:2019-11-24 05:10:53
【问题描述】:

我有一个使用 API 验证凭据的自定义登录表单。一切都运行良好,除了如果我将用户名/电子邮件字段留空并输入密码,API 调用仍然会在它应该在此之前停止时发送。

我查看了规则 bail、required_with(和其他类似规则),但没有一个符合要求。

有没有办法只有验证消息:

标识符字段是必需的。

代替

标识符字段是必需的。

抱歉,这不是与您的标识符关联的密码。请检查并重试。

(如果用户名/电子邮件为空,则停止密码验证?

控制器代码,根据要求(ApiMemberPassword 只是一个自定义规则,发送带有用户名和密码的 API 请求,如果 identifier 为空,则无用):

$validator = Validator::make($request->all(), [
    'identifier' => ['required'],
    'password' => ['bail', 'required', new ApiMemberPassword],
]);

【问题讨论】:

  • 你能展示你的控制器吗?
  • 你能显示你的控制器代码吗?
  • 我没有共享代码,因为我的请求非常简单(只是询问是否有现有的规则),而且从逻辑上讲,它看起来与生活中使用 Laravel 验证的任何人完全一样。但是,嘿,谢谢你的反对,非常友好和有用!

标签: laravel laravel-5 laravel-5.8 laravel-validation


【解决方案1】:

像这样使用它:

 $this->validate($request, [
      'identifier' => 'bail|required',
      'password' => ['required', new ApiMemberPassword],
 ]);

【讨论】:

  • 哇哦!!这行得通,非常感谢!我的错误是在密码规则中添加了“保释”,我将更改我的问题,以便其他用户可以从中受益,非常感谢!
  • 如果您更改问题,答案将毫无用处,而是将其添加为更新。
  • 其实不是,我把代码原样放回去了。看看我最初把“保释金”放在哪里,让我知道你的想法。如果您不满意,我会回复所有这些 cmets 以保持清洁
【解决方案2】:

由于您没有共享任何代码,这是我的建议:

  • 使用简单的 Javascript 验证字段并仅在两个字段都有值时启用“提交”按钮。

至于仅针对电子邮件字段返回错误,无法使用 inbuild laravel 验证。见线程here

这仅仅是因为,通常为了良好的用户体验,有关表单失败的所有错误都应该立即显示,以便用户可以更正所有错误并在下次提交正确的表单。如果完全可以完成,那么在 5 次不同的提交中更正用户 5 次是没有意义的。有意义吗?

但是,如果你真的需要这个,你只有两个字段,你可以进行自定义验证,首先检查电子邮件,然后检查密码,或者简单地使用 Laravel inbuild 验证两次。

【讨论】:

  • 是的,我在发布之前也看到了 github 问题以及 31 个人支持该评论。我同意你的观点,这种条件验证需要在前端进行更正,但是在这种情况下,我不明白为什么有人会在没有用户名的情况下输入密码,所以这实际上只是一个边缘情况附加安全网。我将等待几个小时,看看是否有其他人为此提供后端解决方案,以保持所有验证的连贯性。
  • 哦,是的,也有人可以手动激活提交按钮或通过javascript调用表单提交
  • 当然,任何类型的 javascript 都可能被黑客入侵,这就是为什么你有后端验证但仍然有 js 验证确实限制了 90% 的非黑客用户 :) 你也提到了:if I leave the username/email field blank and enter a password, the API call is still sent when it should stop before that. 这在任何其他方式中都是不可能的,但使用 JS。至于后端验证,正如我所提到的,在链中使用内置验证,一次用于电子邮件,然后用于密码,你应该很高兴。
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2015-08-22
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多