Laravel 5.4 Marshrutni bekor qilish

Men Laravel 5.4 da ishlayotgan dasturimda ro'yxatdan o'tish marshrutini o'chirishga harakat qilaman.

Mening marshrutlarimdagi faylda faqat Auth :: marshrutlarim bor ();

Ro'yxatga olish marshrutini o'chirishning bir yo'li bormi?

21

7 javoblar

Kod:

 Auth::routes();

uning marshrutlar to'plami uchun shorcut:

   //Authentication Routes...
    Route::get('login', 'Auth\[email protected]')->name('login');
    Route::post('login', 'Auth\[email protected]');
    Route::post('logout', 'Auth\[email protected]')->name('logout');

   //Registration Routes...
    Route::get('register', 'Auth\[email protected]')->name('register');
    Route::post('register', 'Auth\[email protected]');

   //Password Reset Routes...
    Route::get('password/reset', 'Auth\[email protected]')->name('password.request');
    Route::post('password/email', 'Auth\[email protected]')->name('password.email');
    Route::get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
    Route::post('password/reset', 'Auth\[email protected]');

Shunday qilib, marshrutlar ro'yxati bilan birinchi o'rnini almashtirishi va o'zingiz istagan marshrutni sharhlashingiz mumkin.

44
qo'shib qo'ydi
Tahrirlash uchun fayl - marshrutlar/web.php
qo'shib qo'ydi muallif geeves, manba

Buni sinashingiz mumkin.

Route::match(['get', 'post'], 'register', function(){
    return redirect('/');
});

Standart ro'yxatga olish yo'llarini bekor qilish uchun Auth :: routes() ostidagi bu yo'nalishlarni qo'shing. /register marshrutiga har qanday so'rov bazaUrl-ga yo'naltiriladi.

11
qo'shib qo'ydi
/login sahifasini o'chirib qo'yadi.
qo'shib qo'ydi muallif Jason, manba
Ishlar juda yaxshi. Oddiy echim! Rahmat!
qo'shib qo'ydi muallif iaforek, manba

Ha, yo'l bor

Auth::routes();

Yo'nalishlaringiz katalogida web.php orqali yo'lni masofadan boshqarish.

Ushbu marshrutni ro'yxatga olishni nazorat qilish.

4
qo'shib qo'ydi
Aslida, bu faqat yarmi. Auth :: marshrutlar (); - bu hujjatlar bo'yicha marshrutlarni yig'ish uchun yorliq. Auth :: routes (); ni olib tashlasangiz, siz aslida xohlaysizmi, qaysi yo'nalishlarga (login kabi) kirishingiz mumkin. Men buni aytmasdan ketganman deb o'ylayman, chunki hujjat bularni qamrab oldi - ehtimol men noto'g'ri bo'ldim. Bu javob texnik jihatdan to'g'ri va to'g'ri. Men nima uchun odamlar bu hodisani hali ham pastga tushirganini bilmayman ... bu javobning to'liq yarmi.
qo'shib qo'ydi muallif Hanny, manba
bu javob to'liq javob bermaydi, faqat uning yarmi
qo'shib qo'ydi muallif Salal Aslam, manba
Buni qilsangiz, kirish usulini o'chirib qo'ysangiz, bu javob noto'g'ri!
qo'shib qo'ydi muallif user2519032, manba

Bu yolg'ondir! Siz faqat ilovada/Http/Controllers/Auth/RegisterController.php sinfida ikkita usulni bekor qilishingiz kerak. Shaklni ko'rsatishga yo'l qo'yadigan va eng muhimi, ro'yxatdan o'tish uchun arizangizga bevosita POST so'rovlarini to'sib qo'yadigan pastga qarang.

/**
 * 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);
}
4
qo'shib qo'ydi

Yuqoridagi echimlar ishlashiga qaramasdan, ilovada \ Http \ Controllers \ Auth \ RegisterController da middleware kodini o'zgartirish uchun 'auth' kodini o'zgartirishni o'ylayman. eng oson echimlardan biri. Bu ro'yxatdan o'tish yo'llarining har qandayiga kirishni xohlasalar, barcha tashrif buyuruvchilarni kirish sahifasiga yo'naltiradi. Shunga o'xshash:

namespace App\Http\Controllers\Auth;
class RegisterController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
3
qo'shib qo'ydi
Bu foydalanuvchi tizimga kirish sahifasiga yo'naltiriladi. Agar foydalanuvchi to'g'ri elektron pochta va parolni kiritsa. U hali ham Ro'yxatga olish sahifasiga yo'naltiriladi, bu O'Rning talabiga binoan noto'g'ri.
qo'shib qo'ydi muallif Waqas, manba

Marshrutlarni o'zgartirish:

sotuvchi \ laravel \ framework \ src \ Illuminate \ Router \ Router.php

public function auth()
{
   //Authentication Routes...
    $this->get('login', 'Auth\[email protected]')->name('login');
    $this->post('login', 'Auth\[email protected]');
    $this->post('logout', 'Auth\[email protected]')->name('logout');

   //Registration Routes...
    //$this->get('register', 'Auth\[email protected]')->name('register');
    //$this->post('register', 'Auth\[email protected]');

   //Password Reset Routes...
    //$this->get('password/reset', 'Auth\[email protected]')->name('password.request');
    //$this->post('password/email', 'Auth\[email protected]')->name('password.email');
    //$this->get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
    //$this->post('password/reset', 'Auth\[email protected]');
}
2
qo'shib qo'ydi
sotuvchi papkasidagi har qanday faylga o'zgartirish kiritish - bu eng yomon fikr
qo'shib qo'ydi muallif Salal Aslam, manba
Keyingi Laravel yangilanishi tahrirlangan faylni bekor qilgani sababli bu yomon fikr. Shunday qilib sizning o'zgarishlaringiz yo'qoladi. Bundan tashqari, kodingizni ta'qib qilish qiyin bo'ladi. Boshqa bir ishlab chiquvchi bu faylni o'zgartirishni o'ylamasligi mumkin va shuning uchun ular hech qanday o'zgarishlarga qaramasligi kerak.
qo'shib qo'ydi muallif geeves, manba

Siz mehmonlarga ba'zi sahifalarga kirishni cheklashni xohlaysiz va faqat administrator mehmonni ro'yxatdan o'tkazishi mumkin deb o'ylayman. Quyidagi kabi kernel.php faylida o'z qavatni qo'shish orqali erishishingiz mumkin:

protected $routeMiddleware = [
      'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class
];

O'rta qavatni yaratgandan so'ng uni ishlatishingiz kerak, shunda marshrutlaringiz joylashgan web.php fayliga kirib, quyidagi kabi cheklashni xohlagan marshrutga qo'shishingiz mumkin:

Route::get('register', 'Auth\[email protected]')->name('register')->middleware('authenticated');
Route::post('register', 'Auth\[email protected]')->middleware('authenticated');

Shunday qilib, ro'yxatga olish mehmonlarga cheklangan, lekin boshqa administratorni ro'yxatdan o'tkazmoqchi bo'lsa, administrator hali ham sahifaga kirishlari mumkin!

Quyidagi kabi batafsil ro'yxat bilan Auth :: routes (); ni almashtirishni unutmang:

// Authentication Routes...
Route::get('login', 'Auth\[email protected]')->name('login');
Route::post('login', 'Auth\[email protected]');
Route::post('logout', 'Auth\[email protected]')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\[email protected]')->name('register')->middleware('authenticated');
Route::post('register', 'Auth\[email protected]')->middleware('authenticated');

// Password Reset Routes...
Route::get('password/reset', 'Auth\[email protected]')->name('password.request');
Route::post('password/email', 'Auth\[email protected]')->name('password.email');
Route::get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
Route::post('password/reset', 'Auth\[email protected]');
1
qo'shib qo'ydi
Auth :: marshrutlarni() fayl yo'nalishlarida/web.php ichida joylashgan
qo'shib qo'ydi muallif geeves, manba
Laravel Uzbek Community
Laravel Uzbek Community
172 ishtirokchilar

PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin