Вы можете защитить маршрут, просто удалив идентификатор пользователя из URL-адреса, но вместо этого получив его через сеанс аутентификации.
Итак, ваша подпись маршрута должна начинаться с:
Route::get('/profile/{user}', 'UserController@edit')->name('profile');
На это:
Route::get('/profile', 'UserController@edit')->name('profile');
Итак, в вашем контроллере вместо получения идентификатора пользователя из запроса:
public function edit(Request $request)
{
$user = User::findOrFail($request->id);
// ...
}
Вы можете получить авторизованный User
через Auth
фасад:
use Illuminate\Support\Facades\Auth;
public function edit(Request $request)
{
$user = Auth::user();
// ...
}
или просто помощник auth()
:
public function edit(Request $request)
{
$user = auth()->user();
// ...
}
Таким образом, вы маскируете URL, чтобы избежать злоумышленника, который делает то, что он / она не должны.