source

Larabel에서 신규 사용자 등록을 해제하는 방법

lovecheck 2022. 10. 20. 21:58
반응형

Larabel에서 신규 사용자 등록을 해제하는 방법

난 라라벨을 쓰고 있어신규 사용자 등록을 해제하고 싶은데 로그인이 필요합니다.

등록 양식/루트/컨트롤러를 비활성화하려면 어떻게 해야 합니까?

Larabel 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.04Larabel 5.0~5의 .4 인치 (4 인치)
  • Auth/RegisterController.php 5.5 Larabel 5.5 †
public function showRegistrationForm()
{
    return redirect('login');
}

public function register()
{

}

이것은 5.7에서 새로워질 수 있지만, 이제 인증 방식에 대한 옵션 배열이 있습니다.심플하게 변경

Auth::routes();

로.

Auth::routes(['register' => false]);

에서 " "를 실행한 후"를 선택합니다.php artisan make:auth는 사용자 등록을 무효로 합니다.

5 경우, Larabel 5. 관련 .php artisan make:auth 당신의 ★★★★★★★★★★★★★★.app/Http/routes.php "Auth"를 호출하는 를 포함합니다.Route::auth()

auth는 auth() URL에 .vendor/laravel/framework/src/Illuminate/Routing/Router.php한 루트 좋은 생각에app/Http/routes.php( 「루트::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.0합니다. 순간 5.2로 하다. 5.0으로 5.0으로 하다.artisan make:authIIRC의

Larabel 5.3 및 5.4의 경우 적절한 방법은 다음과 같습니다.

변경해야 합니다.

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

로.

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

app/Http/Controller/Auth/RegisterController에 있습니다.php

5.을 Larabel 5.7에 할 수 .Auth::routes()다음에, 등록 루트를 디세블로 할 수 있습니다.

Auth::routes(['register' => false]);

소스 코드 src/Iluminate/Routing/Router.php에서 이 기능이 어떻게 작동하는지 확인할 수 있습니다.

버전 5.3의 방법 1

5 larabel 5.3 "AuthController"의 해야 합니다.레지스터 루트를 디세블로 하려면 , 다음의 컨스트럭터로 변경할 필요가 있습니다.RegisterController음음음같 뭇매하다

폼을 변경할 수 있습니다.

public function __construct()
{

    $this->middleware('guest');

}

대상:

use Illuminate\Support\Facades\Redirect;

public function __construct()
{

    Redirect::to('/')->send();

}

: useRedirect 말고 꼭 해 주세요user Redirect;따라서 사용자가 https://host_name에 액세스하고 등록하면 "/"로 리디렉션됩니다.

버전 5.3의 방법2

★★★★★★를 사용하는 경우php artisan make:authAuth::route(); /routes . php / 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를 사용할 경우 getRegister의 postRegister의 postRegister의 postRegister.git.git의 postRegister를 덮어쓰게 될 이 높습니다..gitignore님이 프레임워크 파일을 무시하도록 설정되어 있기 때문에 실제 환경에서 등록이 가능한 상태가 됩니다(예를 들어 컴포저를 통해 라벨이 설치되어 있는 경우).

다른 방법은 루트를 사용하는 것입니다.php 및 다음 행을 추가합니다.

Route::any('/auth/register','HomeController@index');

이렇게 하면 프레임워크 파일은 그대로 유지되고 모든 요청은 프레임워크 레지스터 모듈에서 리다이렉트됩니다.

LA 라벨 5.6

Auth::routes([
    'register' => false, // Registration Routes...
    'reset' => false, // Password Reset Routes...
    'verify' => false, // Email Verification Routes...
]);

AuthController.php in @limonte has override is inApp\Http\Controllers\Auth벤더 디렉토리에 없기 때문에 Git은 이 변경을 무시하지 않습니다.

다음 기능을 추가했습니다.

public function register() {
    return redirect('/');
}

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

올바르게 동작합니다.

web.php에서 Register route false를 설정합니다.

Auth::routes(['register' => false]);

5.4 시점의 솔루션을 이하에 나타냅니다.

//Auth::routes();
// 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');
//Route::post('register', 'Auth\RegisterController@register');

// 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');

아웃이 있는 하세요.Auth::routes()2번입니다.

중요: 또한 모든 인스턴스를 삭제해야 합니다.route('register') 안에서app.blade라라벨이라는 이름

다음의 방법이 올바르게 기능합니다.

를 복사하다/vendor/laravel/framework/src/Illuminate/Routing/Router.php을 여 it에 붙인다.web.php 또는 합니다.Auth::routes().

그런 다음 .env에서 등록을 활성화 또는 비활성화하도록 조건을 설정합니다. 중복해서 쓰세요.503.blade.phpviews/errors.403 and and and 、 403 ]

ALLOW_USER_REGISTRATION=false로 합니다.env(진짜)

이것으로 루트를 완전히 제어할 수 있게 되어 벤더 파일은 그대로 유지됩니다.

web.interface

//Auth::routes();

// 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...
if (env('ALLOW_USER_REGISTRATION', true))
{
    Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
    Route::post('register', 'Auth\RegisterController@register');
}
else
{
    Route::match(['get','post'], 'register', function () {
        return view('errors.403');
    })->name('register');
}

// 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');

이것은, 특히 Rafal G.와 Daniel Centore의 이전의 회답의 조합입니다.

이것은 이전 코멘트에서 언급되었지만, Laravel ^5.7의 web.php 파일에 있는 인증 루트에 액세스 하는 방법은 여러 가지가 있다는 것을 명확히 하고 싶습니다.버전에 따라 조금 다르게 보일 수 있지만 같은 결과를 얻을 수 있습니다.

첫 번째 옵션

Route::auth([
  'register' => false, // Registration Routes...
  'reset' => false, // Password Reset Routes...
  'verify' => false, // Email Verification Routes...
]);

두 번째 옵션

Auth::routes([
  'register' => false, // Registration Routes...
  'reset' => false, // Password Reset Routes...
  'verify' => false, // Email Verification Routes...
]);

★★routes.php다음 항목만 추가합니다.

if (!env('ALLOW_REGISTRATION', false)) {
    Route::any('/register', function() {
        abort(403);
    });
}

할 수 ..envfilename을 클릭합니다.

레벨 5.6 이상에서는 web.php 파일로 편집할 수 있습니다.

Auth::routes(['verify' => true, 'register' => false]);

마음이 바뀌면 그렇게 할 수 있어, 난 이렇게 보는 게 쉽다고 생각해

다음을 사용해야 했습니다.

public function getRegister()
{
    return redirect('/');
}

리다이렉트::to()를 사용하면 다음 오류가 발생하였습니다.

Class 'App\Http\Controllers\Auth\Redirect' not found

인 라라벨 5.4

를 통해 수 있습니다.Auth::routes()\Illuminate\Routing\Router의 방법으로auth()

다음과 같습니다.

/**
 * Register the typical authentication routes for an application.
 *
 * @return void
 */
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');
}

원하는 경로/필요한 경로만 복사하면 됩니다!

larabel 5.을 .이치노showRegistrationForm() RegisterController.phpapp\Http\Controllers\Auth

    /**
     * Show the application registration form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showRegistrationForm()
    {
        //return view('auth.register');
         abort(404);  //this will throw a page not found exception
    }

404 error그리고 언코멘트를 해 주세요.//return view('auth.register'); 후 코멘트 " " " "abort(404);

\\\\\\\\\\\\\\\\\\\\Just An FYI ////////////////////////////////////////

사용자, 멤버, 학생, 관리자 등을 위한 인증 작성과 같은 여러 인증을 사용해야 하는 경우 이 헤스토/멀티 인증은 L5 앱에서 무제한 인증을 위한 훌륭한 패키지입니다.

Auth 방법론 및 관련 파일에 대한 자세한 내용은 이 기사에서 확인할 수 있습니다.

Larabel 5.5의 경우

Laravel 5.5는 Laravel 5.5로 되어 있습니다.「 」를 하는 대신에, 「 」를 사용합니다.Auth::routes() web.php routes만 .

Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

Laravel Breeze와 함께 Laravel 8을 사용하는 경우 이러한 인증 경로는 모두 에 명시되어 있습니다.routes/auth.php등록 경로는 맨 위에 있는 첫 번째 2개입니다.

당신이 원하지 않는 것만 코멘트하고 라라벨이 나머지를 처리한다. 예를 들어, 당신이 코멘트하고 있는 루트를 코멘트 하면forgot-password로그인 창에 "비밀번호를 잊어버렸습니까?" 링크가 표시되지 않습니다.

(Laravel v8.52.0)과 같이 fortify를 사용하는 laravel의 경우 fortify 설정 파일에서 등록 기능을 비활성화할 수 있습니다.

'features' => [
    //Features::registration(),
    //Features::resetPasswords(),
    // Features::emailVerification(),
    Features::updateProfileInformation(),
    Features::updatePasswords(),
    Features::twoFactorAuthentication([
        'confirmPassword' => true,
    ]),
]

코드를 그대로 변경하지 않으려면 요청 URL이 url('register')인지 여부를 감지하는 미들웨어를 만든 다음 404로 수정하거나 원하는 장소에서 수행하십시오.

Larabel 5.5의 경우

유사한 문제에 대처하고 게스트에서 미들웨어 인수를 'auth'로 설정하는 것이 보다 우아한 해결책으로 느껴졌습니다.

파일 편집: app -> http -> 컨트롤러 -> Auth -> Register Controller 。php

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

     //with this argument.
       $this->middleware('auth');
}

내가 틀릴 수도 있지만...그러나 단순히 페이지를 리다이렉트 하는 것보다 더 많은 회선과 더 적은 shity로 루팅을 편집하는 것이 더 교묘해 보입니다.적어도 이 경우 게스트 등록을 잠그고 싶습니다.

이게 더 나은 해결책이 될 것 같아요.

아래 설명에 따라 다음 메서드를 덮어씁니다.

앱\Http\컨트롤러\Auth\RegisterController(인증\레지스터 컨트롤러php

use Illuminate\Http\Response;

.
.
.

public function showRegistrationForm()
{
    abort(Response::HTTP_NOT_FOUND);
}

public function register(Request $request)
{
    abort(Response::HTTP_NOT_FOUND);
}

CRUD 루트 시스템을 사용하는 경우 Larabel 5.5는 매우 간단합니다.

★★★★★★★★★★★★★★★로 이동app/http/controllers/RegisterController요.Illuminate\Foundation\Auth\RegistersUser

User: Registers User로 .Illuminate\Foundation\Auth\RegistersUser

이 있어요.showRegistrationForm 변::return view('auth.login');경우 : ★★★★★★★★★★★★★★:return redirect()->route('auth.login');블레이드 페이지 루트콜 레지스터를 삭제합니다.을 사용하다

 <li role="presentation">
     <a class="nav-link" href="{{ route('register') }}">Register</a>
 </li> 

이것이 5.6 라라벨에서 가장 쉬운 해결책이라는 것을 알았습니다!yoursite.com/register에 접속하려는 사용자는 누구나 yoursite.com으로 리다이렉트 됩니다.

routes/web.interval

// redirect from register page to home page
Route::get('/register', function () {
    return redirect('/');
});

레지스터 블레이드 코드를 로그인 블레이드 코드로 교체했을 뿐입니다.이렇게 하면 레지스터는 로그인 할 수 있습니다.

resources/views/auth/register.blade.php, 로로었 is is is is로 바뀝니다.resources/views/auth/login.blade.php

5, 아래의 방법을 Larabel 5.6+에 .app\Http\Controller\Auth\RegisterController

/*
* Disabling registeration.
*
*/
public function register() 
{
    return redirect('/');
}

/*
* Disabling registeration.
*
*/
public function showRegistrationForm() 
{
    return redirect('/');
}

.RegistersUser특성, 당신이 마음을 바꿀 때마다 이 방법들을 제거하세요.를 붙일 .welcome.blade.php ★★★★★★★★★★★★★★★★★」login.blade.php참조할 필요가 있습니다.

Fortify 사용자의 경우 config/fortify를 변경합니다.php

'features' => [
    // Features::registration(), // --------> comment out this
    Features::resetPasswords(),
    // Features::emailVerification(),
    Features::updateProfileInformation(),
    Features::updatePasswords(),
    Features::twoFactorAuthentication(),
],

더하다

use \Redirect;

파일 맨 위에

언급URL : https://stackoverflow.com/questions/29183348/how-to-disable-registration-new-users-in-laravel

반응형