Исключить маршрут из аутентификации 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);