为了账号安全,请及时绑定邮箱和手机立即绑定

我的表正在更新,但在 Laravel 6 更新之前未验证

我的表正在更新,但在 Laravel 6 更新之前未验证

PHP
偶然的你 2022-07-09 10:59:20
我第一次使用 Laravel,版本 6.2。我的代码可以很好地更新数据库上的表,但它在更新之前不验证数据。这是我第一次需要自己验证我的表单(不是默认的 laravel auth),我认为我缺少一些基本的东西来让它工作。我正在尝试使用当前密码 - 新密码 - 确认新密码来制作典型的更改密码表格。下面是我的路线,我的控制器和我的观点。路线Route::get('/cambiarclave', 'Auth\ChangePasswordController@showChangeForm');Route::post('/cambiarclave', 'Auth\ChangePasswordController@changePassword')->name('cambiarclave');更改密码控制器.phpclass ChangePasswordController extends Controller{    public function __construct()    {        $this->middleware('auth');    }    public function showChangeForm()    {        return view('auth.cambiarclave');    }    protected function validator(array $data)    {        return Validator::make($data, [            'clave-actual' => ['required', 'string', 'min:6'],            'nueva-clave' => ['required', 'string', 'min:6', 'confirmed'],        ]);    }    public function changePassword(request $request)    {        $data = $request->all();        $user = User::find(auth()->user()->id);        if (!Hash::check($data['clave-actual'], $user->password)) {            return back()->with('error', 'You have entered wrong password');        }        $user_id = $user;        $obj_user = User::find($user_id);        $obj_user->password = \Hash::make($request->input('nueva-clave'));        $obj_user->save();        auth()->logout();        return redirect('/ingreso');    }}
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

你错过了这里执行你的validator方法。您应该添加如下代码:


$validator = $this->validator($data);


if ($validator->fails()) {

    return back()

        ->withErrors($validator)

        ->withInput();

}


$user = User::find(auth()->user()->id);

在你的控制器中运行验证。


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信