วิธีปิดการลงทะเบียนผู้ใช้ใหม่ใน Laravel


131

ฉันใช้ Laravel (v5)

ฉันต้องการผู้ใช้หนึ่งคนและฉันได้ลงทะเบียนแล้ว ตอนนี้ฉันต้องการปิดการลงทะเบียนสำหรับผู้ใช้ใหม่ แน่นอนฉันต้องการแบบฟอร์มเข้าสู่ระบบเพื่อทำงาน

ฉันจะทำเช่นนั้นได้อย่างไร?


เพียงลบเมธอดที่เกี่ยวข้องกับการลงทะเบียนออกจากไฟล์route.phpของคุณ อย่าลบล้างเมธอดด้วยวิธีการว่างเปล่ามันเป็นวิธีการที่น่ากลัวและแฮ็คเพราะคุณจะต้องเพิ่มเนื้อหาอีกครั้งหากคุณตัดสินใจที่จะเปิดใช้งานคุณลักษณะนั้นอีกครั้งในอนาคต
Martin Bean

1
@MartinBean ไม่มีเส้นทางในroutes.php. ในการเปิดใช้งานฟังก์ชั่นการพิสูจน์ตัวตนสิ่งที่คุณต้องทำคือเพิ่มลงRoute::auth();ในไฟล์
miken32

@ miken32 ความคิดเห็นของฉันมาจากเมื่อห้าเดือนที่แล้วก่อนที่จะมีการRoute::auth()สนับสนุนทางลัด
Martin Bean

5
หากคุณอยู่ใน laravel 5.5 ขึ้นไป Auth::routes(['register' => false]);ใน web.php
Manojkiran

คำตอบ:


237

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()
{

}

5
อาจเป็นการดีที่จะเปลี่ยนฟังก์ชัน create () เป็น: throw new Exception ('ลงทะเบียนไม่ได้');
JinX

2
หรือคุณสามารถเพิ่มabort(404)บนfunction register()
วิลเลียม Notowidagdo

3
ฉันจะไม่สนับสนุนแนวทางนี้เนื่องจากการใช้โค้ดมากเกินไปเพื่อลบฟีเจอร์นั้นไม่ใช่เรื่องดี อย่าลงทะเบียนเส้นทางที่เกี่ยวข้องกับการลงทะเบียน
Martin Bean

4
สำหรับ Laravel 5.5 ใส่ไว้ในAuth/RegisterController.php
kapoko

7
ในshowRegistrationForm()ฟังก์ชันLaravel 5.7 อยู่ในvendorโฟลเดอร์ในทางเทคนิคไม่แนะนำให้แก้ไขไฟล์ในโฟลเดอร์ผู้ขาย web.phpโดยทั่วไปสิ่งที่ผมขอแนะนำคือการลบเส้นทางทะเบียนจาก คุณสามารถพูดAuth::routes(['register' => false])ในweb.phpไฟล์ ไชโย!
Ahamed Rasheed

55

หากคุณกำลังใช้ Laravel 5.2 และคุณติดตั้งการทำงานที่เกี่ยวข้องกับการรับรองความถูกต้องด้วยphp artisan make:authแล้วคุณไฟล์จะรวมทั้งหมดเส้นทางรับรองความถูกต้องที่เกี่ยวข้องโดยเพียงแค่การเรียกร้องapp/Http/routes.phpRoute::auth()

สามารถดูวิธี auth () ได้ในvendor/laravel/framework/src/Illuminate/Routing/Router.php. ดังนั้นหากคุณต้องการทำตามที่บางคนแนะนำที่นี่และปิดการลงทะเบียนโดยการลบเส้นทางที่ไม่ต้องการ (อาจเป็นความคิดที่ดี) คุณต้องคัดลอกเส้นทางที่คุณยังต้องการจากวิธี auth () แล้วใส่เข้าไปapp/Http/routes.php(แทนที่การโทรไปยัง Route :: รับรองความถูกต้อง ()) ตัวอย่างเช่น:

<?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


แทนที่จะลบเส้นทางการลงทะเบียนเป็นไปได้ไหมที่จะเปิดใช้งานสำหรับผู้ใช้บางประเภทเท่านั้น
Sefran2

@ Sefran2 คุณสามารถทำได้โดยการเชื่อมโยงกลุ่มกับมิดเดิลแวร์ ตรวจสอบlaravel.com/docs/5.2/routing#route-groups
Rafał G.

ก่อนอื่นฉันพยายามRoute::group(['middleware' => 'auth'], function () { Route::get('register', 'Auth\AuthController@showRegistrationForm'); Route::post('register', 'Auth\AuthController@register'); });แต่เมื่อผู้ใช้ที่บันทึกไว้ร้องขอ/registerเขาถูกเปลี่ยนเส้นทางไปที่/
Sefran2

1
@ Sefran2 นั่นเป็นเพราะ AuthController โทร (ผ่านชั้นเรียนอื่น ๆ และลักษณะก็เป็นเล็ก ๆ น้อย ๆ ที่ซับซ้อน) App\Http\Middleware\RedirectIfAuthenticatedมิดเดิลแวร์ และมิดเดิลแวร์นั้นจะเปลี่ยนเส้นทางคุณไป/หากคุณได้เข้าสู่ระบบแล้วทำไมคุณถึงต้องการลงทะเบียนถ้าคุณเข้าสู่ระบบ? :-) หากคุณต้องการอนุญาตเฉพาะบางเส้นทางสำหรับผู้ใช้บางประเภทคุณจะต้องสร้างมิดเดิลแวร์ของคุณเองแทน['middleware' => 'auth']
Rafał G.

2
สำหรับ 5.3 จะแตกต่างกันอีกครั้ง แต่ยังสามารถพบได้ใน vendor / laravel / framework / src / Illuminate / Routing / Router.php
Matthieu

51

นี่อาจเป็นของใหม่ใน 5.7 แต่ตอนนี้มีอาร์เรย์ตัวเลือกสำหรับวิธีการรับรองความถูกต้อง เพียงแค่เปลี่ยน

Auth::routes();

ถึง

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

ในไฟล์เส้นทางของคุณหลังจากรันphp artisan make:authจะปิดการลงทะเบียนผู้ใช้


1
ขอบคุณสำหรับสิ่งนี้ฉันไม่ทราบว่ามีเวอร์ชันใดอยู่ แต่ฉันคิดว่ามันเป็นเส้นทางที่ถูกต้องสำหรับการปิดใช้งานส่วนการลงทะเบียน!
Olivier Rochaix

มันถูกเพิ่มใน 5.7
Džuris

34

สำหรับ Laravel 5.3 และ 5.4 นี่คือวิธีที่เหมาะสม:

คุณต้องเปลี่ยน:

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

ถึง

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

ในแอพ / Http / Controller / Auth / RegisterController.php


1
งานที่ดี! ฉันคิดว่าวิธีนี้ยังช่วยป้องกันคำขอ POST สำหรับการสร้างผู้ใช้ผ่านโพสต์?
Gediminas

3
นี้จะช่วยให้ผู้ใช้ที่ลงทะเบียนเพื่อดูหน้าการลงทะเบียนที่คุณจะไม่ต้องการ
อาเหม็ด

2
ใช้มิดเดิลแวร์ ("auth") จากนั้นมิดเดิลแวร์ ("guest") เพื่อข้ามหน้าการลงทะเบียนสำหรับทุกคน
user3425867

1
จากนั้นผู้ใช้รับรองความถูกต้องสามารถลงทะเบียนผู้ใช้ใหม่ได้ในกรณีนี้
Muhammad Azam

ใช่นี่เป็นวิธีเดียวที่เหมาะสมสำหรับสิ่งที่ต่ำกว่า 5.7 .. นี่ไม่ใช่คำตอบที่เลือกอย่างไร
user3548161

31

ในฐานะของ Laravel 5.7 Auth::routes()คุณสามารถส่งผ่านอาร์เรย์ของตัวเลือกที่จะ จากนั้นคุณสามารถปิดการใช้งานเส้นทางการลงทะเบียนด้วย:

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

คุณสามารถดูวิธีการทำงานนี้จากรหัสที่มา: src / สว่าง / สายงานการผลิต / Router.php


1
ในความคิดของฉันนี่คือคำตอบที่ถูกต้อง พบแล้ว!
Rick Kuilman

26

วิธีที่ 1 สำหรับเวอร์ชัน 5.3.2

ใน laravel 5.3 ไม่มี AuthController หากต้องการปิดใช้งานเส้นทางการลงทะเบียนคุณควรเปลี่ยนตัวสร้างRegisterControllerดังนี้:

คุณสามารถเปลี่ยนแบบฟอร์ม:

public function __construct()
{

    $this->middleware('guest');

}

ถึง:

use Illuminate\Support\Facades\Redirect;

public function __construct()
{

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

}

หมายเหตุ: สำหรับการใช้งานRedirect อย่าลืมเพื่อ user Redirect; ให้ผู้ใช้เข้าถึงhttps: // host_name / registerมันเปลี่ยนเส้นทางไปที่ "/"

วิธีที่ 2 สำหรับเวอร์ชัน 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');

ขอบคุณ! ฉันหวังว่ามันจะสามารถแก้ปัญหาของคุณได้


ฉันจะเพิ่มชื่อเส้นทางตามที่ระบุใน vendor / laravel / framework / src / Illuminate / Routing / Router.php Route :: get ('login', 'Auth \ LoginController @ showLoginForm') -> name ('login'); เส้นทาง :: post ('login', 'Auth \ LoginController @ login'); เส้นทาง :: post ('logout', 'Auth \ LoginController @ logout') -> name ('logout');
Luciano Fantuzzi

คลาสเปลี่ยนเส้นทางพลาดในวิธีแรก แต่เปลี่ยนเป็น$this->middleware('auth');- ได้ผล!
Gediminas

12

การเขียนทับ getRegister และ postRegister เป็นเรื่องยุ่งยาก - หากคุณใช้ git มีความเป็นไปได้สูงที่.gitignoreจะถูกตั้งค่าให้ละเว้นไฟล์เฟรมเวิร์กซึ่งจะนำไปสู่ผลลัพธ์ที่การลงทะเบียนจะยังคงเป็นไปได้ในสภาพแวดล้อมการผลิตของคุณ (หากติดตั้ง laravel ผ่านตัวแต่งเช่น )

ความเป็นไปได้อีกอย่างคือใช้ route.php และเพิ่มบรรทัดนี้:

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

ด้วยวิธีนี้ไฟล์เฟรมเวิร์กจะถูกปล่อยให้อยู่คนเดียวและคำขอใด ๆ จะยังคงถูกเปลี่ยนเส้นทางออกจากโมดูลการลงทะเบียน Frameworks


4
คลาสที่แทนที่เมธอดเฟรมเวิร์กไม่ได้อยู่ในเฟรมเวิร์ก (จะอยู่ในโฟลเดอร์แอพ) และจะถูกเก็บไว้โดย git วิธีการลบล้างไม่ได้หมายความว่าคุณเปลี่ยนวิธีการเหล่านี้ในไฟล์เฟรมเวิร์ก
datashaman

11

AuthController.php@limonte ได้แทนที่อยู่ในApp\Http\Controllers\Authไม่ได้อยู่ในไดเรกทอรีผู้ขายดังนั้น Git ไม่เพิกเฉยต่อการเปลี่ยนแปลงนี้

ฉันได้เพิ่มฟังก์ชั่นนี้:

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

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

และทำงานได้อย่างถูกต้อง


9

ระดับ 5.6

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

สิ่งนี้ควรรวมเข้ากับคำตอบที่ยอมรับ แต่เป็นเพียงการแก้ไขเล็กน้อย ฟีเจอร์นี้เปิดตัวใน Laravel 5.7 ไม่ใช่ Laravel 5.6
WebSpanner

8

นี่คือทางออกของฉันที่ 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()และเส้นทางการลงทะเบียนทั้งสอง

สำคัญ:คุณต้องแน่ใจว่าคุณได้ลบอินสแตนซ์ทั้งหมดroute('register')ในapp.bladeเค้าโครงของคุณไม่เช่นนั้น Laravel จะเกิดข้อผิดพลาด


^ นี้ ในกรณีที่เส้นทางเหล่านี้มีการเปลี่ยนแปลงเพียงคัดลอก / วางจากชุดเส้นทางการตรวจสอบสิทธิ์ที่อยู่ที่ @ github.com/laravel/framework/blob/…และแสดงความคิดเห็นเกี่ยวกับเส้นทางการลงทะเบียน
pbond

7

วิธีต่อไปนี้ใช้งานได้ดี:

คัดลอกทุกเส้นทางจาก/vendor/laravel/framework/src/Illuminate/Routing/Router.phpและวางลงและแสดงความคิดเห็นออกหรือลบweb.phpAuth::routes()

จากนั้นตั้งค่าเงื่อนไขเพื่อเปิดและปิดการลงทะเบียนจาก. env ทำซ้ำ503.blade.phpไฟล์ในviews/errorsและสร้าง 403 ต้องห้ามหรืออะไรก็ได้ที่คุณต้องการ

เพิ่มALLOW_USER_REGISTRATION=ลงใน. env และควบคุมการลงทะเบียนผู้ใช้โดยตั้งค่าเป็นจริงหรือเท็จ

ตอนนี้คุณสามารถควบคุมเส้นทางได้เต็มรูปแบบและไฟล์ของผู้ขายยังคงไม่มีใครแตะต้อง

web.php

//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


6

บน laravel 5.6 ขึ้นไปคุณสามารถแก้ไขในไฟล์web.php

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

และคุณสามารถทำให้มันเป็นจริงได้ถ้าคุณเปลี่ยนใจฉันเห็นว่ามันง่ายด้วยวิธีนี้


5

ในroutes.phpเพียงเพิ่มสิ่งต่อไปนี้:

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

จากนั้นคุณสามารถเลือกควบคุมได้ว่าจะอนุญาตให้ลงทะเบียนหรือไม่ใน.envไฟล์ของคุณ


3

ฉันต้องใช้:

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

การใช้ Redirect :: to () ทำให้ฉันมีข้อผิดพลาด:

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

ขอบคุณใช่นี่เป็นคุณสมบัติเวอร์ชันใหม่คุณสามารถใช้ฟังก์ชันนี้หรือใช้คลาสก่อนหน้า แต่คลาสก่อนหน้าต้องการก่อนฉันหมายถึง \ Redirect :: to ('destination');
Milad Rahimi

3

ใน Laravel 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');
}

เพียงแค่คัดลอกเส้นทางที่คุณต้องการ / ต้องการเท่านี้คุณก็สบายดี!


2

ใน laravel 5.3 คุณควรแทนที่ค่าเริ่มต้นshowRegistrationForm()โดยรวมรหัสด้านล่างลงในRegisterController.phpไฟล์ในรูปแบบapp\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);

\\\\\\\\\ เพียงแค่ FYI ///////////////////////// ////

หากคุณต้องการใช้การรับรองความถูกต้องหลายรายการเช่นสร้างการรับรองความถูกต้องสำหรับผู้ใช้สมาชิกนักเรียนผู้ดูแลระบบ ฯลฯ ฉันขอแนะนำให้คุณชำระเงินhesto / multi-auth นี้เป็นแพ็คเกจที่ยอดเยี่ยมสำหรับการตรวจสอบสิทธิ์แบบไม่ จำกัด ในแอป L5

คุณสามารถอ่านเพิ่มเติม abouth วิธีการรับรองความถูกต้องและไฟล์ที่เกี่ยวข้องในเรื่องนี้เขียนขึ้น


2
คุณต้องแก้ไขเส้นทางการโพสต์ด้วยเพื่อหลีกเลี่ยงการลงทะเบียนผู้ใช้ผ่านคำขอโพสต์
Vaishnav Mhetre

2

ใน Laravel 5.5

ฉันพยายามทำปัญหาเดียวกันใน Laravel 5.5 ให้สำเร็จ แทนที่จะใช้Auth::routes()ในไฟล์เส้นทาง web.php ฉันรวมเฉพาะเส้นทางการเข้าสู่ระบบ / ออกจากระบบ:

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

2

สิ่งนี้ได้รับการกล่าวถึงในความคิดเห็นก่อนหน้านี้ แต่ฉันต้องการชี้แจงว่ามีหลายวิธีในการเข้าถึงเส้นทางการตรวจสอบสิทธิ์ในไฟล์ web.php ของคุณใน Laravel ^ 5.7 ขึ้นอยู่กับรุ่นของคุณอาจดูแตกต่างกันเล็กน้อย แต่ให้ผลลัพธ์เหมือนกัน

ตัวเลือกแรก

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...
]);


0

เพื่อไม่ให้เปลี่ยนรหัสมากเกินไปเพียงแค่สร้างมิดเดิลแวร์เพื่อตรวจสอบว่า url คำขอเป็น url ('register') จากนั้นเปลี่ยนเส้นทางไปที่ 404 หรือทำทุกที่


1
โซลูชันระยะยาวมาก ฟังก์ชันง่ายๆแทนที่ด้วยการยกเลิกสามารถทำงานได้อย่างแน่นอน
Vaishnav Mhetre

0

ใน Laravel 5.5

การแก้ไขปัญหาที่คล้ายกันและการตั้งค่าอาร์กิวเมนต์มิดเดิลแวร์จาก guest เป็น 'auth' ดูเหมือนจะเป็นวิธีแก้ปัญหาที่หรูหรากว่า

แก้ไขไฟล์: app-> http-> Controllers-> Auth-> RegisterController.php

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

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

แม้ว่าฉันอาจจะผิด ... แต่ดูเหมือนจะลื่นกว่าการแก้ไขเส้นทางด้วยบรรทัดที่มากขึ้นและความคลาดเคลื่อนน้อยกว่าเพียงแค่เปลี่ยนเส้นทางหน้า ... อย่างน้อยในกรณีนี้ต้องการล็อกการลงทะเบียนสำหรับแขก


ฉันอยากรู้ว่าผู้ใช้สามารถลงทะเบียนหลายครั้งโดยใช้วิธีนี้ได้หรือไม่ guestตัวกลางคือเปลี่ยนเส้นทางรับผิดชอบอยู่ในระบบของผู้ใช้ออกจากหน้าเว็บที่เพียงเข้ากระป๋อง (เช่น/registerหน้า)
คิงสลีย์

0

ฉันเดาว่านี่น่าจะเป็นทางออกที่ดีกว่า

แทนที่วิธีการต่อไปนี้ตามที่ระบุไว้ด้านล่าง

App \ 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);
}

0

ใน Laravel 5.5 นั้นง่ายมากหากคุณใช้ระบบเส้นทาง CRUD

ไปที่app/http/controllers/RegisterController นั่นคือเนมสเปซ:Illuminate\Foundation\Auth\RegistersUser

คุณต้องไปที่ RegistersUser: 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> 

0

ฉันพบว่านี่เป็นทางออกที่ง่ายที่สุดใน laravel 5.6! จะเปลี่ยนเส้นทางทุกคนที่พยายามไปที่ yoursite.com/register ไปยัง yoursite.com

เส้นทาง / web.php

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

0

สิ่งที่ฉันทำคือแทนที่รหัสใบลงทะเบียนด้วยรหัสใบมีดล็อกอิน วิธีการลงทะเบียนยังคงไปที่การเข้าสู่ระบบ

resources/views/auth/register.blade.php ถูกแทนที่ด้วย resources/views/auth/login.blade.php


0

สำหรับ Laravel 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ดู


-11

เพิ่ม

use \Redirect;

ที่ด้านบนสุดของไฟล์


คุณหมายถึง use \ Redirect;
Mike Miller

นี่ไม่ใช่คำตอบที่สมบูรณ์
Martin Bean

ที่ด้านบนของไฟล์ใด การแก้ปัญหาไม่สมบูรณ์และสับสน
The Dead Guy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.