저는 Laravel (v5)을 사용하고 있습니다.
한 명의 사용자가 필요하며 이미 등록했습니다. 이제 새 사용자 등록을 비활성화하고 싶습니다. 물론 작동하려면 로그인 양식이 필요합니다.
어떻게 할 수 있습니까?
답변
Laravel 5.7은 다음 기능을 도입했습니다.
Auth::routes(['register' => false]);
현재 가능한 옵션은 다음과 같습니다.
Auth::routes([
'register' => false, // Registration Routes...
'reset' => false, // Password Reset Routes...
'verify' => false, // Email Verification Routes...
]);
이전 Laravel 버전은 무시 들어 showRegistrationForm()
및 register()
방법에
AuthController
Laravel 5.0-5.4 용Auth/RegisterController.php
Laravel 5.5 용
public function showRegistrationForm()
{
return redirect('login');
}
public function register()
{
}
답변
당신은 Laravel 5.2을 사용하면 함께 인증 관련 기능 설치 한 경우 php artisan make:auth
다음 app/Http/routes.php
단순히 호출하여 모든 인증 관련 경로를 포함 파일을 Route::auth()
.
auth () 메서드는에서 찾을 수 있습니다 vendor/laravel/framework/src/Illuminate/Routing/Router.php
. 따라서 일부 사람들이 여기에서 제안한대로 원하지 않는 경로를 제거하여 등록을 비활성화하려면 (아마도 좋은 생각 일 것입니다) auth () 메서드에서 여전히 원하는 경로를 복사하여 넣어야합니다 app/Http/routes.php
(Route에 대한 호출 대체). :: auth ()). 예를 들어 :
<?php
// This is app/Http/routes.php
// Authentication Routes...
Route::get('login', 'Auth\AuthController@showLoginForm');
Route::post('login', 'Auth\AuthController@login');
Route::get('logout', 'Auth\AuthController@logout');
// Registration Routes... removed!
// Password Reset Routes...
Route::get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
Route::post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
Route::post('password/reset', 'Auth\PasswordController@reset');
5.2보다 낮은 버전을 사용하는 경우 아마도 다를 수 있습니다. 5.0 이후로 상황이 상당히 변경된 것을 기억합니다. 어떤 시점에서는 artisan make:auth
IIRC가 제거되었습니다.
답변
이것은 5.7의 새로운 기능 일 수 있지만 이제 auth 메소드에 대한 옵션 배열이 있습니다. 단순히 변경
Auth::routes();
에
Auth::routes(['register' => false]);
실행 후 경로 파일에서 php artisan make:auth
사용자 등록을 비활성화합니다.
답변
Laravel 5.3 및 5.4의 경우 적절한 방법은 다음과 같습니다.
변경해야합니다.
public function __construct()
{
$this->middleware('guest');
}
에
public function __construct()
{
$this->middleware('auth');
}
에서 응용 프로그램 / HTTP / 컨트롤러 / 인증 / RegisterController.php
답변
Laravel 5.7부터는 옵션 배열을 Auth::routes()
. 그런 다음 다음을 사용하여 등록 경로를 비활성화 할 수 있습니다.
Auth::routes(['register' => false]);
소스 코드에서 어떻게 작동하는지 볼 수 있습니다 : src / Illuminate / Routing / Router.php .
답변
버전 5.3의 방법 1
laravel 5.3에는 AuthController가 없습니다. 레지스터 경로를 비활성화하려면 다음과 RegisterController
같이 생성자에서 변경해야합니다 .
양식을 변경할 수 있습니다.
public function __construct()
{
$this->middleware('guest');
}
에:
use Illuminate\Support\Facades\Redirect;
public function __construct()
{
Redirect::to('/')->send();
}
참고 : 사용
하려면 https : // host_name / register에 대한 사용자 액세스를 Redirect
잊지 마세요 . “/”로 리디렉션됩니다.user Redirect;
버전 5.3의 방법 2
사용 php artisan make:auth
하면 Auth::route();
자동으로 추가 됩니다. /routes/web.php에서 경로를 재정의하십시오. 다음과 같이 변경할 수 있습니다. *이 줄에 주석을 추가해야합니다.Auth::routes();
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are handled
| by your application. Just tell Laravel the URIs it should respond
| to using a Closure or controller method. Build something great!
|
*/
// Auth::routes();
Route::get('/login', 'Auth\LoginController@showLoginForm' );
Route::post('/login', 'Auth\LoginController@login');
Route::post('/logout', 'Auth\LoginController@logout');
Route::get('/home', 'HomeController@index');
감사! 나는 그것이 당신의 문제를 해결할 수 있기를 바랍니다.
답변
getRegister 및 postRegister를 덮어 쓰는 것은 까다 롭습니다. git을 사용하는 경우 .gitignore
프레임 워크 파일을 무시하도록 설정되어 프로덕션 환경에서 등록이 여전히 가능하다는 결과를 초래할 가능성이 높습니다 (예를 들어 laravel이 composer를 통해 설치된 경우) )
또 다른 가능성은 routes.php를 사용하고 다음 줄을 추가하는 것입니다.
Route::any('/auth/register','HomeController@index');
이렇게하면 프레임 워크 파일이 그대로 유지되고 모든 요청이 프레임 워크 등록 모듈에서 멀리 리디렉션됩니다.