Исключить маршрут из аутентификации Laravel

после php artisan make:auth все необходимые маршруты в route.php файл, но можно ли его удалить (я хочу удалить маршрут регистрации)?

В настоящее время у меня есть

Route::group(['middleware' => 'web'], function () {
    Route::auth();
});

Я знаю, что Route::auth() ярлык для добавления всех маршрутов. Должен ли я указать маршруты сам, а не использовать ярлык?

4 ответов


к сожалению вы не можете исключить регистре с текущей реализацией Route::auth().

вы должны были бы указать все маршруты вручную так

// Authentication Routes...
$this->get('login', 'Auth\AuthController@showLoginForm');
$this->post('login', 'Auth\AuthController@login');
$this->get('logout', 'Auth\AuthController@logout');

// Password Reset Routes...
$this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
$this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
$this->post('password/reset', 'Auth\PasswordController@reset');

Я думаю, что это довольно обычное дело хотеть сделать было бы неплохо, если бы был параметр auth способ сказать без регистрации возможно, вы могли бы подать запрос на проект.


Я просто YOLO и изменить это в RegisterController.в PHP

public function __construct()
{
    $this->middleware('guest');
}

этой

public function __construct()
{
    $this->middleware('auth');
}

Это делает страницу регистрации требует, чтобы вы вошли в систему, чтобы достичь его.

это взлом. Но это хороший Хак.

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

    $u1= new App\User;
    $u1->name = 'Your name';
    $u1->email = 'your@mail.com';
    $u1->password = bcrypt('yourPassword');
    $u1->save();

как сказал Марк Дэвидсон, это невозможно из коробки. Но вот как я справился.

теперь это может быть излишним, но я передаю массив того, что необходимо. Если параметры не передаются, создаются маршруты по умолчанию.

// Include the authentication and password routes
Route::auth(['authentication', 'password']);
/**
 * Register the typical authentication routes for an application.
 *
 * @param array $options
 * @return void
 */
public function auth(array $options = [])
{
    if ($options) {
        // Authentication Routes...
        if (in_array('authentication', $options)) {
            $this->get('login', 'Auth\AuthController@showLoginForm');
            $this->post('login', 'Auth\AuthController@login');
            $this->get('logout', 'Auth\AuthController@logout');
        }

        // Registration Routes...
        if (in_array('registration', $options)) {
            $this->get('register', 'Auth\AuthController@showRegistrationForm');
            $this->post('register', 'Auth\AuthController@register');
        }

        // Password Reset Routes...
        if (in_array('password', $options)) {
            $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
            $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
            $this->post('password/reset', 'Auth\PasswordController@reset');
        }
    } else {
        // Authentication Routes...
        $this->get('login', 'Auth\AuthController@showLoginForm');
        $this->post('login', 'Auth\AuthController@login');
        $this->get('logout', 'Auth\AuthController@logout');

        // Registration Routes...
        $this->get('register', 'Auth\AuthController@showRegistrationForm');
        $this->post('register', 'Auth\AuthController@register');

        // Password Reset Routes...
        $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
        $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
        $this->post('password/reset', 'Auth\PasswordController@reset');
    }
}

для вашего случая вы, вероятно, можете просто передать boolean как параметр вместо array. Если boolean true тогда не нагружают register маршруты, в противном случае загрузите все.

надеюсь, что это помогает.


вы можете добавить перенаправление на маршрут / register следующим образом:

<?php

Auth::routes();

// prevent registration, this needs to be after Auth::routes()
Route::redirect('register', '/home', 301);