Laravel - запретить доступ к контроллеру через маршрут в URL - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю над сайтом на основе Laravel. В моих формах я использую маршрутизацию, чтобы указать форме, где разместить мои данные, например, маршрут ('login'), который может указывать на http://localhost:3000/login. Однако, если я вручную напишу http://localhost:3000/login в браузер, я получаю исключение MethodNotAllowedHttpException, которое хорошо, но как мне предотвратить, чтобы конечный пользователь увидел это исключение и вместо этого просто возвратил его на страницу индекса?

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Laravel имеет множество функций, облегчающих аутентификацию. Если вы хотите реализовать вход в систему, это то, что я делаю во всех своих разработках, в папке вашего проекта в cmd просто введите:

  • Запустите php artisan make: auth - это создает некоторые контроллеры и представления для управления аутентификацией
  • Запустите php artisan migrate - это создаст необходимые таблицы в базе данных

и теперь вы можете обновить сайт, и аутентификация завершена, вы можете получить больше информации здесь https://laravel.com/docs/5.6/authentication,

если это не то, что вам нужно, я думаю, что наиболее рекомендуемым для вашего случая может быть промежуточное программное обеспечение, промежуточное программное обеспечение перехватывает каждый запрос, прежде чем его разрешить, поэтому вы можете выполнить любую проверку, которую хотите для каждого запроса, Опять же, чтобы получить больше информации об этом, здесь https://laravel.com/docs/5.6/middleware#terminable-middleware

0 голосов
/ 30 апреля 2018

Перенаправление плохая практика, если в этом проблема, вы можете взглянуть на это решение:

перейдите в файл .env и добавьте этот код


  APP_ENV=production
  APP_DEBUG=false

и


   resources/views/errors/405.blade.php

Это обработает ошибку для MethodNotAllowedHttpException поэтому, конечно, вы можете настроить интерфейс и сообщение в этом файле.

Надеюсь, это поможет!

0 голосов
/ 30 апреля 2018

Вы получаете MethodNotAllowedHttpException, потому что ваш маршрут входа в систему, вероятно, требует запрос POST, чтобы перейти к представлению входа в систему, и непосредственный ввод URL-адреса является запросом GET. Вы можете перенаправить все GET запросы в / логин, добавив это к routes/web.php:

Route::get('/login', function () {
    return redirect('/');
});

, и вы можете заменить '/' любым URL-адресом, указывающим на страницу индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...