Я пытаюсь отключить маршрута зарегистрироваться на моем приложение, которое работает в фреймворк Laravel 5.4.
В моем деле стороны, у меня есть только
Auth::routes();
Есть ли способ, чтобы отключить реестр маршрутов?
Поле Код
:
Ланг-РНР Авт::маршруты();
его shorcut для этой коллекции маршрутов:
``Ланг-РНР
Маршруты Проверка Подлинности / / ...
Маршрут::сделать('логин', 'авт\LoginController@showLoginForm')->название('логин');
Маршрут:пост('логин', 'авт\LoginController@логин');
Маршрут:пост('выход', 'авт\LoginController@выход')->название('выход');
// Регистрация Маршруты... Маршрут::сделать('Регистрация#39;, 'авт\RegisterController@showRegistrationForm')->название('Регистрация#39;); Маршрут:пост('Регистрация#39;, 'авт\RegisterController@регистра');
// Маршрутов Сброса Пароля... Маршрут::сделать('пароля/сброс', 'авт\ForgotPasswordController@showLinkRequestForm')->название('пароль.запрос'); Маршрут:пост('пароль/имейл', 'авт\ForgotPasswordController@sendResetLinkEmail')->название('пароль.адрес электронной почты'); Маршрут::получить('пароля/сброс/{маркер}', 'авт\ResetPasswordController@showResetForm')->название('пароль.сброс'); Маршрут:пост('пароля/сброс', 'авт\ResetPasswordController@сброса'); `` Поэтому можно заменить первое со списком маршрутов и закомментировать любой маршрут вы Дон'т хотите, чтобы в вашем приложении.
Редактировать на фреймворк Laravel версии => 5.7`
В новых версиях вы можете добавить параметр авт::вызов функции маршрутах ()
, чтобы отключить реестр маршрутов:
Ланг-РНР Авт::маршруты(['Регистрация#39; => значение false]);
Добавлены маршруты подтверждение адреса электронной почты:
Ланг-РНР Маршрут::сделать('письмо/проверить', 'авт\VerificationController@шоу')->название('проверки.обратите внимание'); Маршрут::получить('по электронной почте/проверки/{ИД}', 'авт\VerificationController@проверить')->название('проверки.проверить'); Маршрут::сделать('по электронной почте/отправить', 'авт\VerificationController@отправить')->название('проверки.отправить');
Кстати, вы также можете отключить сброс пароля
и маршруты подтверждение адреса электронной почты
:
Ланг-РНР Авт::маршруты(['сброса' => значение false, 'подтвердить' => значение false]);
Так что Laravel 5.7, новый $параметры параметр вводится в [
Auth::routes()](https://github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/Router.php#L1147) способ; посредством которого можно передать массив для управления генерацией в <их>требуется</ЭМ> маршруты для проверки подлинности пользователя (допустимые значения могут быть выбраны от
'зарегистрировать',
'сброс', или
'подтвердить'` строковые литералы).
Auth::routes(['register' => false]);
Вы могли бы попробовать это.
Route::match(['get', 'post'], 'register', function(){
return redirect('/');
});
Добавить их стороны чуть ниже авт::маршруты () переопределять регистрации маршрутов по умолчанию. Любой запрос к маршруту
/зарегистрироваться` перенаправит к baseURL.
Это обманчиво простая! Вам просто нужно переопределить два метода в классе app/http/controllers/auth/registercontroller.php
. Смотрите ниже которая позволит предотвратить форме от этого человека и самое главное блок прямого POST-запросы к вашему приложению для регистраций..
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
return redirect('login');
}
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
abort(404);
}
В web.php заменить
Авт::маршруты();
С
Авт::маршруты(['Регистрация#39; => значение false]);
Так что вы можете удалить зарегистрировать маршрут от дефолта авт списке маршрутов. я пытался в 5.7 и все работало нормально.
Несмотря на вышеперечисленные решения работают, но, я думаю, что изменение промежуточного
на 'авт'
в `приложения\НТТР\контроллеры\авт\RegisterController будет одним из самых простых решений. Это будет перенаправлять всех посетителей на страницу входа, если они хотят получить доступ к любому из Регистрация маршрутов. Как это:
namespace App\Http\Controllers\Auth;
class RegisterController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
На мой фреймворк Laravel 5.6 этот метод проектов не't работа:
в PHP Авт::маршруты(['Регистрация#39; => значение false]);
Поэтому мне пришлось использовать следующий метод:
в PHP Маршрут::матч(['вам', 'пост'], 'зарегистрироваться', функция () { возвращение прервать(403, 'запретный'); })->название('регистрации');
Я предположим, вы хотите ограничить доступ к некоторым страницам для гостей и только админ может зарегистрировать гостя. Вы можете добиться этого путем добавления собственных промежуточного ПО kernel.php файл, как показано ниже:
protected $routeMiddleware = [
'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class
];
После создания промежуточного уровня вы должны использовать его, так что вы можете пойти на файл web.php где ваши маршруты и добавить его к маршруту, который вы хотите ограничить, как показано ниже:
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register')->middleware('authenticated');
Route::post('register', 'Auth\RegisterController@register')->middleware('authenticated');
Эта регистрация как только гости, но админ все равно можете получить доступ к странице, если он захочет зарегистрировать некоторые другие админы!
Дон'т забудьте заменить авт::маршруты();
с подробным списком, как показано ниже:
// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register')->middleware('authenticated');
Route::post('register', 'Auth\RegisterController@register')->middleware('authenticated');
// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
Добавить эти два метода app\Http\Controllers\Auth\RegisterController.php
public function showRegistrationForm(){
return redirect('login');
}
public function register(){
}
Просто перезаписать свой двиг showRegistrationForm() способ ( поместите этот код внутри авт/RegisterController )
showRegistrationForm общественные функции() { вернуть редирект()->маршрут('логин'); }
Я'м просто перенаправив мой маршрут зарегистрироваться, чтобы войти маршрут. Здесь вы Дон'т нужно добавить или удалить любой другой код
Изменения маршрутов :
vendor\laravel\framework\src\Illuminate\Routing\Router.php
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
//$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
//$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
//$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
//$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
//$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
//$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}