लार्वा 5.3 नए प्रामाणिक :: मार्ग ()


128

हाल ही में मैंने एक ब्लॉग लिखने के लिए लारवेल 5.3 का उपयोग करना शुरू किया, लेकिन मेरे पास चलाने के बाद एक सवाल है php artisan make:auth

जब मैं इसे चलाऊंगा, तो यह मेरे लिए मार्ग उत्पन्न करेगा web.php

यह इसमें कोड है:

Auth::routes();

Route::get('/home', 'HomeController@index');

फिर मैं दौड़ता हूँ php artisan route:list, मुझे बहुत सी क्रियाएँ मिलती हैं, जैसे LoginController @ लॉगिन ...

लेकिन मुझे ये हरकतें नहीं मिलीं App\Http\Controllers\Auth, ये कहाँ हैं?

और यह भी कि Auth::routes()स्टैंड किस लिए है, मुझे ऑथ के बारे में रूट नहीं मिले।

मुझे किसी की मदद चाहिए, मेरे सवाल का जवाब देने के लिए धन्यवाद


10
क्या मैं अकेला हूँ जो अब उन सभी लारवेल मैजिक्स से नफरत करता है?
मुहम्मद उस्मान

1
मुझे लार्वा मैजिक्स से ऐतराज नहीं है, अगर केवल उन्हें दस्तावेज दिया गया था ... और php कारीगर का जप करते हुए सर्वर के चारों ओर widdershins चलने के बिना लगातार काम किया..क्या?
बारादिली

सब कुछ लारवेल डेवलपर्स के लिए नहीं है, यह कंपनियों और नौसिखिए उपयोगकर्ताओं के लिए है जो नए एप्लिकेशन को तेज और आसान लाना चाहते हैं, यहां तक ​​कि उनके प्रलेखन भी। अगर मुझे पसंद होता तो मैं अभी भी कोडिनाइटर को पसंद करूंगा।
ब्लैकपैंथर

इस गाइड को पढ़ें: medium.com/@panjeh/…
panjeh

जवाबों:


214

Auth::routes()केवल एक सहायक वर्ग है जो उपयोगकर्ता प्रमाणीकरण के लिए आवश्यक सभी मार्गों को उत्पन्न करने में आपकी सहायता करता है। आप यहाँ कोड https://github.com/laravel/framework/blob/5.3/src/Illuminate/Rout/Router.php ब्राउज़ कर सकते हैं ।

यहाँ मार्ग हैं

// 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');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');

2
धन्यवाद! मैं देख रहा हूँ ../Rout/Router.php और अब मुझे पता है कि मार्ग कैसे काम करते हैं। लेकिन जहाँ स्थैतिक विधि मार्गों () है? मैं अभी भी इसे नहीं पा रहा हूँ, मुझे माफ कर दो मैं एक
लार्वा

4
प्रामाणिक :: मार्ग विधि यहाँ है github.com/laravel/framework/blob/5.3/src/Illuminate/Support/… और इसके कॉलिंग राउटर फ़ंक्शन को वैसे भी। कृपया इसे उत्तर के रूप में चिह्नित करें यदि इसने आपकी मदद की है, धन्यवाद।
ली

2
Authएक मुखौटा है और आपको परिभाषित किया config/app.phpजाएगा , आपको उस कॉन्फ़िगरेशन फ़ाइल में इसके प्रदाता के रूप में कार्य करने वाला वर्ग मिलेगा।
जेसन

एक ही है, लेकिन त्रुटि हो रही है: NotFoundHttpException in RouteCollection.php line 161:और एक अन्य एपीआई चल रहा है ठीक है।
151291

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');Auth
१४१२

52

यहाँ पर Laravel 5.7 , Laravel 5.8 , Laravel 6.0 और Laravel 7.0 (ईमेल सत्यापन मार्ग में 6.0 में मामूली बीसी परिवर्तन पर ध्यान दें)।

// 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')->name('password.update');

// Confirm Password (added in v6.2)
Route::get('password/confirm', 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm');
Route::post('password/confirm', 'Auth\ConfirmPasswordController@confirm');

// Email Verification Routes...
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}/{hash}', 'Auth\VerificationController@verify')->name('verification.verify'); // v6.x
/* Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify'); // v5.x */
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

आप इन मार्गों को यहां सत्यापित कर सकते हैं:


1
आपके लिंक शो के रूप में वास्तव में 5.8 से 6.x में एक छोटा सा परिवर्तन था: ईमेल सत्यापन लिंक के लिए मार्ग होना चाहिए 'email/verify/{id}/{hash}'। अन्यथा हैश को सत्यापित नहीं किया जा सकता है और "यह कार्रवाई अनधिकृत है" कहते हुए एक 403 त्रुटि डाली जाएगी।
डेब्यू

46

लारवेल 5.3 के बजाय प्रामाणिक मार्ग: प्रामाणिक मार्ग ()। मुझे उम्मीद है यह मदद करेगा...

Route::group(['middleware' => ['web']], function() {

// Login Routes...
    Route::get('login', ['as' => 'login', 'uses' => 'Auth\LoginController@showLoginForm']);
    Route::post('login', ['as' => 'login.post', 'uses' => 'Auth\LoginController@login']);
    Route::post('logout', ['as' => 'logout', 'uses' => 'Auth\LoginController@logout']);

// Registration Routes...
    Route::get('register', ['as' => 'register', 'uses' => 'Auth\RegisterController@showRegistrationForm']);
    Route::post('register', ['as' => 'register.post', 'uses' => 'Auth\RegisterController@register']);

// Password Reset Routes...
    Route::get('password/reset', ['as' => 'password.reset', 'uses' => 'Auth\ForgotPasswordController@showLinkRequestForm']);
    Route::post('password/email', ['as' => 'password.email', 'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail']);
    Route::get('password/reset/{token}', ['as' => 'password.reset.token', 'uses' => 'Auth\ResetPasswordController@showResetForm']);
    Route::post('password/reset', ['as' => 'password.reset.post', 'uses' => 'Auth\ResetPasswordController@reset']);
});

इसलिए यदि आप इन मार्गों के कुछ नाम बदलते हैं, तो याद रखें कि पदों के कार्यों को भी देखें!


धन्यवाद, लेकिन आपको 'मिडलवेयर' => ['वेब'] की आवश्यकता नहीं है: बॉक्स से बाहर होने के कारण, वेब मिडलवेयर समूह को रूटसेवरप्रॉइडर द्वारा स्वचालित रूप से आपके मार्गों / web.php फ़ाइल पर लागू किया जाता है।
पनजीह

15

के लिए Laravel 5.5.x

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

8

फ़ंक्शन कॉल ऑर्डर:

  1. (प्रमाणीकरण) रोशन \ Support \ Facades \ प्रमाणीकरण @ मार्गों ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (एप्लिकेशन) रोशन \ फाउंडेशन \ Application @ प्रमाणन
  3. (मार्ग) रोशन \ रूटिंग \ रूटर

यह इस तरह से मार्ग है:

public function auth()
{
    // Authentication Routes...
    $this->get('login', 'Auth\AuthController@showLoginForm');
    $this->post('login', 'Auth\AuthController@login');
    $this->get('logout', 'Auth\AuthController@logout');
    // Registration Routes...
    $this->get('register', 'Auth\AuthController@showRegistrationForm');
    $this->post('register', 'Auth\AuthController@register');
    // Password Reset Routes...
    $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
    $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
    $this->post('password/reset', 'Auth\PasswordController@reset');
}


यह उत्तर वास्तव में ओपी द्वारा पूछे गए प्रश्न पर प्रकाश डालता है। धन्यवाद @SilentCat
वेलेंटाइन शि

मुझे लगा कि मौखिक रूप से यह स्पष्ट करना अच्छा होगा कि इन 3 चरणों में क्या होता है: Auth::routes()- प्रामाणिक पहलू - Routerलारवेल कंटेनर से वस्तु उदाहरण को पुनः प्राप्त करता है और इसकी पूर्व-मौजूदा विधि को कॉल करता है authauthबदले में मार्गों और उनके संबंधित नियंत्रकों को परिभाषित करता है जो द्वारा उत्पन्न किए गए थे php artisan make:auth। यह बात है।
वेलेंटाइन शी

7

इसने मेरे लिए लारावेल 5.6 के साथ काम किया ।

फ़ाइल में web.php, बस प्रतिस्थापित करें:

Auth::routes();

द्वारा:

//Auth::routes();
// Authentication Routes...
Route::get('admin/login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('admin/login', 'Auth\LoginController@login');
Route::post('admin/logout', 'Auth\LoginController@logout')->name('logout');
// 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');

और नीचे दो फाइलों में रजिस्टर लिंक को हटा दें :

welcome.blade.php
layouts/app.blade.php

4

यदि आप लार्वा 7 संस्करण के लिए इन्हीं मार्गों को खोज रहे हैं, तो आप इसे यहाँ पाएँगे Vendor/laravel/ui/src/AuthRouteMethods.php


1

मुझे आश्चर्य है कि किसी ने भी कमांड का उल्लेख नहीं किया है php artisan route:list, जो सभी पंजीकृत ऐप मार्गों की सूची देता है ( यदि पंजीकृत है Auth::routes()और Passport::routes()यदि है)


0

लॉगिन क्लास एक विशेषता का उपयोग करता है जिसे कहा जाता है AuthenticatesUsers

यदि आप उस विशेषता को खोलते हैं, तो आप कार्य देखेंगे (यह अन्य नियंत्रकों के लिए लागू होता है) Illuminate\Foundation\Auth\AuthenticatesUsers;

यहाँ विशेषता कोड https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php है

खराब प्रारूप के लिए खेद है, मेरे फोन का उपयोग करके im

यह भी Auth::routes()सिर्फ एक फ़ंक्शन को कॉल करता है जो सामान्य मार्गों को लौटाता है अर्थात इसे (मुझे लगता है)


हां, मैं प्रामाणिक / डीआईआर के माध्यम से देखता हूं, लेकिन मुझे वह तरीका नहीं मिल रहा है, जैसे कि ऐप \ _ एचटीटीपी \ कंट्रोलर \ अथ \ _ रीसेटपेसवर्डकंट्रोलर @ showResetForm, जहां मुझे @ के बाद विधि मिल सकती है, मुझे इसे ढूंढने में बहुत समय लगता है, लेकिन अब मैं यह भी नहीं जान सकता..मैं लार्वा के लिए नया हूँ ..
g1eny0ung

1
यहाँ पूरा रास्ता है vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords, अगर आप इसे या कुछ बदलना चाहते हैं, तो इसे न बदलें, बस उर नियंत्रक में एक ही तरीका जोड़ें और फिर इसे बदल दें,
अचराफ खुदाजा

@ अचराफ खुद्जा, ऐसा लगता है कि आप मास्टर लार्वा हैं। मैं तुम्हारी मदद चाहता हूँ। यहां देखें: stackoverflow.com/questions/41047583/…
toh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.