【发布时间】:2018-09-24 18:29:59
【问题描述】:
我有一个 Laravel 应用程序,超级管理员用户可以在其中编辑其他用户。
请注意,超级管理员也应该能够编辑用户的密码。 因为我不能真正向人们显示密码(无论如何它都是散列的),所以我只显示一个空的密码输入字段。验证此用户对象的最佳方法是什么?
我的表单如下所示:
<form class="form-horizontal" method="post" action="{{ route('update_user') }}">
@csrf
<input type="hidden" name="user_id" value="{{ $user->id }}">
<input type="text" name="name" value="{{ $user->name }}">
<input type="password" name="password" >
<button type="submit">
</form>
我在 FormRequest 中的规则如下所示:
public function rules()
{
$userId = $this->input('user_id');
return [
'name' => 'sometimes|required|string|max:255',
'password' => 'sometimes|required|string|min:6|confirmed'
];
}
- 场景是超级管理员只编辑名称字段并提交表单。
- 收到的密码为空。
- 所以密码规则出错了。
如果它是null,我可以通过取消设置请求中的密码值来处理这个问题。但我真诚地认为这是一种蹩脚的方式。有没有更好的方法来实现这一点?
【问题讨论】:
-
您不需要用旧密码确认用户凭据吗?
-
不,我不需要它。这是一个封闭的系统,他们的老板会为工人分配一个密码。当他们忘记时;老板再分配。这是一个设计不佳的流程,但我对此无话可说。
-
@SühaBoncukçu 我添加了一个我认为更准确地实现了您想要的答案:stackoverflow.com/a/49858314/102205
标签: php forms laravel request laravel-5.6