Saya mencoba menonaktifkan rute register pada aplikasi saya yang berjalan di Laravel 5.4.
Di file rute saya, saya hanya punya
Auth::routes();
Apakah ada cara untuk menonaktifkan rute register?
Saya mencoba menonaktifkan rute register pada aplikasi saya yang berjalan di Laravel 5.4.
Di file rute saya, saya hanya punya
Auth::routes();
Apakah ada cara untuk menonaktifkan rute register?
code
:
Auth::routes();
ini jalan pintas untuk kumpulan rute ini:
// 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');
Jadi Anda dapat mengganti yang pertama dengan daftar rute dan mengomentari rute mana pun yang tidak Anda inginkan di aplikasi Anda.
Edit untuk laravel version => 5.7
Di versi yang lebih baru, Anda dapat menambahkan parameter ke pemanggilan fungsi Auth::routes()
untuk menonaktifkan rute register:
Auth::routes(['register' => false]);
Rute verifikasi email telah ditambahkan:
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
BTW Anda juga dapat menonaktifkan rute Password Reset
dan Email Verification
:
Auth::routes(['reset' => false, 'verify' => false]);
Auth::routes(['register' => false]);
, mengapa?
- person Haritsinh Gohil; 17.07.2019
Auth::routes()
tidak menerima argumen apa pun, yang hanya diperkenalkan di versi yang lebih baru.
- person dparoli; 17.07.2019
Auth::routes()
mendukung argumen setelah laravel 5.7 tetapi kamu juga bisa melakukan seperti ini di versi laravel ‹ 5.7 Route::redirect('register', 'login', 301);
yang terlihat lebih sederhana dari di atas bukan ?
- person Haritsinh Gohil; 17.07.2019
Route::redirect()
tidak ada.
- person dparoli; 17.07.2019
redirect
juga ditambahkan di laravel 5.5
, maaf terima kasih sudah beres.
- person Haritsinh Gohil; 17.07.2019
Sejak Laravel 5.7, parameter $options
baru diperkenalkan ke Auth::routes()
metode; yang melaluinya Anda dapat meneruskan larik untuk mengontrol pembuatan rute yang diperlukan untuk autentikasi pengguna (entri yang valid dapat dipilih dari literal string 'register'
, 'reset'
, atau 'verify'
).
Auth::routes(['register' => false]);
Auth::routes(['verify' => true]);
- person Grant; 09.11.2018
Anda bisa mencoba ini.
Route::match(['get', 'post'], 'register', function(){
return redirect('/');
});
Tambahkan rute tersebut tepat di bawah Auth::routes()
untuk mengganti rute pendaftaran default. Setiap permintaan ke rute /register
akan dialihkan ke baseUrl.
/login
halaman.
- person Jason; 25.05.2017
Ini tampaknya mudah! Anda hanya perlu mengganti dua metode di Kelas app/Http/Controllers/Auth/RegisterController.php
Anda. Lihat di bawah yang akan mencegah formulir ditampilkan dan yang paling penting memblokir permintaan POST langsung ke aplikasi Anda untuk pendaftaran..
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
return redirect('login');
}
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
abort(404);
}
Di web.php, Ganti
Auth::routes();
Dengan
Auth::routes(['register' => false]);
Sehingga Anda dapat menghapus rute pendaftaran dari daftar rute autentikasi default. saya mencoba di 5.7 dan berfungsi dengan baik.
Meskipun solusi di atas berhasil, tetapi menurut saya mengubah middleware
menjadi 'auth'
di App\Http\Controllers\Auth\RegisterController
akan menjadi salah satu solusi termudah. Ini akan mengarahkan semua pengunjung ke halaman login jika mereka ingin mengakses salah satu rute pendaftaran. Seperti ini:
namespace App\Http\Controllers\Auth;
class RegisterController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
Pada proyek Laravel 5.6 saya, metode ini tidak berfungsi:
Auth::routes(['register' => false]);
Jadi saya harus menggunakan metode berikut:
Route::match(['get', 'post'], 'register', function () {
return abort(403, 'Forbidden');
})->name('register');
Saya kira Anda ingin membatasi akses ke beberapa halaman untuk tamu dan hanya admin yang dapat mendaftarkan tamu. Anda dapat mencapainya dengan menambahkan middleware Anda sendiri pada file kernel.php seperti di bawah ini:
protected $routeMiddleware = [
'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class
];
Setelah membuat middleware, Anda harus menggunakannya sehingga Anda dapat membuka file web.php di mana rute Anda berada dan menambahkannya ke rute yang ingin Anda batasi seperti di bawah ini:
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register')->middleware('authenticated');
Route::post('register', 'Auth\RegisterController@register')->middleware('authenticated');
Dengan cara ini pendaftaran dibatasi untuk tamu tetapi admin masih dapat mengakses halaman tersebut jika dia ingin mendaftarkan admin lain!
Jangan lupa ganti Auth::routes();
dengan daftar detailnya seperti di bawah ini:
// 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')->middleware('authenticated');
Route::post('register', 'Auth\RegisterController@register')->middleware('authenticated');
// 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');
Saya kira Anda bisa melakukannya seperti ini, di file web.php Anda:
Route::redirect('register', 'login', 301);
Tambahkan dua metode ini ke app\Http\Controllers\Auth\RegisterController.php
public function showRegistrationForm(){
return redirect('login');
}
public function register(){
}
Cukup timpa metode autentikasi showRegistrationForm() Anda (tempatkan kode ini di dalam Auth/RegisterController )
public function showRegistrationForm(){
return redirect()->route('login');
}
Saya hanya mengarahkan rute pendaftaran saya ke rute login. Di sini Anda tidak perlu menambahkan atau menghapus kode lainnya
Ya, ada jalan
Auth::routes();
Hapus rute itu dari web.php Anda di direktori rute Anda.
Rute itulah yang mengontrol pendaftaran.
Auth::routes();
adalah pintasan untuk kumpulan rute sesuai dokumentasi. Jika Anda menghapus Auth::routes();
maka Anda dapat memasukkan rute apa pun yang sebenarnya Anda inginkan satu per satu (seperti login). Saya pikir tidak perlu dikatakan lagi, karena dokumentasi mencakup hal itu - rupanya saya salah. Jawaban ini secara teknis benar dan benar. Saya tidak tahu mengapa orang masih meremehkan ini... itu sebenarnya setengah dari jawaban yang diterima.
- person Hanny; 10.04.2018
Ubah ke rute:
vendor\laravel\framework\src\Illuminate\Routing\Router.php
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');
}
Auth::routes(['register' => false]);
- person Zohaib   schedule 22.09.2018