Что Laravel 5.4 Отключить Маршрута Зарегистрироваться

Я пытаюсь отключить маршрута зарегистрироваться на моем приложение, которое работает в фреймворк Laravel 5.4.

В моем деле стороны, у меня есть только

Auth::routes();

Есть ли способ, чтобы отключить реестр маршрутов?

Комментарии к вопросу (2)
Решение

Поле Код: Ланг-РНР Авт::маршруты(); его 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]);

Комментарии (6)

Так что Laravel 5.7, новый $параметры параметр вводится в [Auth::routes()](https://github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/Router.php#L1147) способ; посредством которого можно передать массив для управления генерацией в <их&GT;требуется</ЭМ> маршруты для проверки подлинности пользователя (допустимые значения могут быть выбраны от'зарегистрировать','сброс', или'подтвердить'` строковые литералы).

Auth::routes(['register' => false]);
Комментарии (3)

Вы могли бы попробовать это.

Route::match(['get', 'post'], 'register', function(){
    return redirect('/');
});

Добавить их стороны чуть ниже авт::маршруты () переопределять регистрации маршрутов по умолчанию. Любой запрос к маршруту/зарегистрироваться` перенаправит к baseURL.

Комментарии (3)

Это обманчиво простая! Вам просто нужно переопределить два метода в классе 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);
}
Комментарии (0)

В web.php заменить

Авт::маршруты();

С

Авт::маршруты([&#39;Регистрация#39; => значение false]);

Так что вы можете удалить зарегистрировать маршрут от дефолта авт списке маршрутов. я пытался в 5.7 и все работало нормально.

Комментарии (1)

Несмотря на вышеперечисленные решения работают, но, я думаю, что изменение промежуточного на &#39;авт&#39; в `приложения\НТТР\контроллеры\авт\RegisterController будет одним из самых простых решений. Это будет перенаправлять всех посетителей на страницу входа, если они хотят получить доступ к любому из Регистрация маршрутов. Как это:

namespace App\Http\Controllers\Auth;
class RegisterController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
Комментарии (1)

На мой фреймворк Laravel 5.6 этот метод проектов не't работа:

в PHP Авт::маршруты([&#39;Регистрация#39; => значение false]);

Поэтому мне пришлось использовать следующий метод:

в PHP Маршрут::матч([&#39;вам&#39;, &#39;пост&#39;], &#39;зарегистрироваться&#39;, функция () { возвращение прервать(403, &#39;запретный&#39;); })->название(&#39;регистрации&#39;);

Комментарии (0)

Я думаю, вы можете сделать это в ваш файл web.php :

Route::redirect('register', 'login', 301);
Комментарии (0)

Я предположим, вы хотите ограничить доступ к некоторым страницам для гостей и только админ может зарегистрировать гостя. Вы можете добиться этого путем добавления собственных промежуточного ПО 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');
Комментарии (1)

Добавить эти два метода app\Http\Controllers\Auth\RegisterController.php

public function showRegistrationForm(){
    return redirect('login');
}

public function register(){

}
Комментарии (0)

Просто перезаписать свой двиг showRegistrationForm() способ ( поместите этот код внутри авт/RegisterController )

showRegistrationForm общественные функции() { вернуть редирект()->маршрут(&#39;логин&#39;); }

Я'м просто перенаправив мой маршрут зарегистрироваться, чтобы войти маршрут. Здесь вы Дон'т нужно добавить или удалить любой другой код

Комментарии (0)

Изменения маршрутов :

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');
}
Комментарии (2)

Да, есть способ

Auth::routes();

Удаленный маршрут из своего web.php в каталоге маршрутов.

Этот маршрут является то, что Управление регистрации.

Комментарии (3)