লারাভেলের নতুন ব্যবহারকারীদের নিবন্ধকরণ কীভাবে অক্ষম করবেন


130

আমি লারাভেল (ভি 5) ব্যবহার করছি।

আমার একটি ব্যবহারকারী প্রয়োজন এবং আমি ইতিমধ্যে এটি নিবন্ধভুক্ত করেছি। এখন আমি নতুন ব্যবহারকারীদের জন্য নিবন্ধকরণ অক্ষম করতে চাই। অবশ্যই, কাজ করার জন্য আমার লগইন ফর্মটি দরকার।

আমি এটা কিভাবে করবো?


আপনার রুটস.এফপি ফাইল থেকে কেবল নিবন্ধভুক্ত সম্পর্কিত পদ্ধতিগুলি সরিয়ে দিন । ফাঁকাগুলি দিয়ে পদ্ধতিগুলিকে ওভাররাইড করবেন না - এটি ভবিষ্যতে সেই বৈশিষ্ট্যটি পুনরায় সক্ষম করার সিদ্ধান্ত নিলে আপনি মৃতদেহগুলি পুনরায় যুক্ত করতে পারেন বলে এটি একটি ভয়ঙ্কর এবং হ্যাক-ওয়াই পদ্ধতির।
মার্টিন বিন

1
@ মার্টিনবিয়ান- তে কোনও রুট নেই routes.php। প্রমাণীকরণ কার্যাবলী সক্ষম করতে, আপনি যা করেন তা হ'ল Route::auth();ফাইলটিতে যুক্ত করা।
মিকেন 32

@ miken32 আমার মন্তব্য Route::auth()শর্টকাট করার পক্ষে পাঁচ মাস আগে, থেকে ছিল।
মার্টিন বিন ২

5
আপনি যদি Auth::routes(['register' => false]);ওয়েব.এফপি
তে

উত্তর:


234

লারাভেল ৫. নিম্নলিখিত কার্যকারিতাটি চালু করেছে:

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

এখানে বর্তমানে সম্ভাব্য বিকল্পগুলি হ'ল:

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

পুরানো লারাভেল সংস্করণগুলির জন্য কেবল ওভাররাইড হবে showRegistrationForm() এবং register()পদ্ধতিগুলি

  • AuthController লারাভেল 5.0 - 5.4 এর জন্য
  • Auth/RegisterController.php লারাভেল 5.5 এর জন্য
public function showRegistrationForm()
{
    return redirect('login');
}

public function register()
{

}

5
তৈরি () ফাংশনটি এতে পরিবর্তন করে নেওয়াও বুদ্ধিমানের কাজ হতে পারে: নতুন ব্যতিক্রম ছোঁড়া ('নিবন্ধকরণ সম্ভব নয়');
জিনএক্স

2
অথবা আপনি যোগ করতে পারেন abort(404)উপরfunction register()
উইলিয়াম Notowidagdo

3
আমি এই পদ্ধতির পক্ষে করব না, কারণ কোনও বৈশিষ্ট্য অপসারণ করার জন্য ওভারলোডিং কোড কখনই ভাল জিনিস নয়। শুধু নিবন্ধকরণ সম্পর্কিত রুটগুলি নিবন্ধন করবেন না।
মার্টিন বিন

4
Auth/RegisterController.php
লারাভেল

7
লারাভেল 5.7 showRegistrationForm()ফাংশনে vendorফোল্ডারে রয়েছে, প্রযুক্তিগতভাবে এটি বিক্রেতার ফোল্ডারে ফাইল সম্পাদনা করার প্রস্তাব দেওয়া হয় না । মূলত আমি যা প্রস্তাব করি তা হ'ল নিবন্ধের রুট সরিয়ে ফেলা web.php। আপনি কেবল ফাইলের Auth::routes(['register' => false])মধ্যে বলতে পারেন web.php। চিয়ার্স!
আহমেদ রাশেদ

55

যদি আপনি লারাভেল 5.2 ব্যবহার করেন এবং আপনি php artisan make:authতখন আপনার সাথে প্রবন্ধ সম্পর্কিত কার্যকারিতা ইনস্টল করেনapp/Http/routes.php ফাইলটিতে কেবল কল করে সমস্ত লেখক-সম্পর্কিত রুট অন্তর্ভুক্ত করা হবে Route::auth()

লেখক () পদ্ধতিটি পাওয়া যাবে vendor/laravel/framework/src/Illuminate/Routing/Router.php। সুতরাং আপনি যদি কিছু লোক এখানে পরামর্শ হিসাবে এবং অযাচিত রুটগুলি (সম্ভবত একটি ভাল ধারণা) অপসারণ করে নিবন্ধকরণটি অক্ষম করতে চান তবে আপনি এখনও রাইথ () পদ্ধতি থেকে আপনার যে রুটগুলি চান তা অনুলিপি করতে হবে এবং সেগুলিতে প্রবেশ করতে হবে (রুটে app/Http/routes.phpকলটির পরিবর্তে ) :: প্রমাণীকরণ ())। উদাহরণস্বরূপ:

<?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 সরানো হয়েছে।


নিবন্ধকরণের রুটগুলি সরানোর পরিবর্তে, কেবলমাত্র নির্দিষ্ট ধরণের ব্যবহারকারীদের জন্যই কি তাদের সক্ষম করা সম্ভব?
সেফরান 2

@ সেফরান 2 মিডলওয়্যারের সাথে গোষ্ঠীগুলি যুক্ত করে আপনি এটি অর্জন করতে পারেন। পরীক্ষা করে দেখুন laravel.com/docs/5.2/routing#route-groups
Rafal জি

প্রথমত, আমি চেষ্টা করেছি Route::group(['middleware' => 'auth'], function () { Route::get('register', 'Auth\AuthController@showRegistrationForm'); Route::post('register', 'Auth\AuthController@register'); });, কিন্তু /register/
লগড

1
@ সেফরান 2 এর কারণ অডকন্ট্রোলার কল করেছে (অন্যান্য ক্লাস এবং বৈশিষ্ট্যের মাধ্যমে এটি কিছুটা বিশৃঙ্খলাযুক্ত) মিডওয়্যার App\Http\Middleware\RedirectIfAuthenticated। এবং সেই মিডলওয়্যারটি আপনাকে /ইতিমধ্যে লগ ইন করা হলে আপনাকে পুনঃনির্দেশ করে Which যা বোঝায়, আপনি লগ ইন থাকলে আপনি কেন নিবন্ধন করতে চান? :-) আপনি যদি কেবল কিছু ধরণের ব্যবহারকারীর জন্য কিছু রুটের অনুমতি দিতে চান তবে আপনার নিজের মিডলওয়্যারের পরিবর্তে নিজের তৈরি করতে হবে['middleware' => 'auth']
রাফা জি।

2
5.3 তারা আবার ভিন্ন, কিন্তু এখনও বিক্রেতা খুঁজে পাওয়া যেতে পারে / Laravel / ফ্রেমওয়ার্ক / src / জ্বালান / রাউটিং / Router.php
Matthieu

51

এটি 5.7-এ নতুন হতে পারে তবে লেখক পদ্ধতিতে এখন বিকল্পের অ্যারে রয়েছে। সহজ পরিবর্তন হচ্ছে

Auth::routes();

প্রতি

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

আপনার রুট ফাইল চলমান পরে php artisan make:authব্যবহারকারী নিবন্ধকরণ অক্ষম করবে।


1
এর জন্য ধন্যবাদ, আমি জানি না যে এটির কোন সংস্করণ বিদ্যমান, তবে আমি মনে করি এটি নিবন্ধকরণ অংশটি অক্ষম করার জন্য সঠিক পথ!
অলিভিয়ার রোচিক্স

এটি যোগ করা হয়েছিল 5.7।
ডিউরিস

34

লারাভেল 5.3 এবং 5.4 এর জন্য এটি করার উপযুক্ত উপায় এখানে রয়েছে:

আপনাকে পরিবর্তন করতে হবে:

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

প্রতি

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

মধ্যে অ্যাপ্লিকেশন / HTTP / কন্ট্রোলার / প্রমাণীকরণ / RegisterController.php


1
চমৎকার কাজ! আমি মনে করি এইভাবে পোস্টের মাধ্যমে ব্যবহারকারী তৈরি করার জন্য পোষ্ট অনুরোধ থেকেও সুরক্ষা দেয়?
গেদিমিনাস

3
এটি নিবন্ধীকৃত ব্যবহারকারীদের নিবন্ধীকরণ পৃষ্ঠাটি দেখার অনুমতি দেবে যা আপনি চান না
আহমদ

2
সবার জন্য রেজিস্ট্রেশন পৃষ্ঠাটি বাইপাস করতে মিডলওয়্যার ("
আথ

1
তাহলে কোনও লেখক ব্যবহারকারী এই ক্ষেত্রে একটি নতুন ব্যবহারকারীকে নিবন্ধন করতে পারেন।
মুহাম্মদ আজম

হ্যাঁ 5.7 এর নীচের যে কোনও কিছুর জন্য এটি একমাত্র সঠিক উপায় .. এটি কীভাবে নির্বাচিত উত্তর নয়
ব্যবহারকারী 354816161

31

লারাভেল ৫.7 হিসাবে আপনি বিকল্পগুলির একটি অ্যারে পাস করতে পারেন Auth::routes()। তারপরে আপনি নিবন্ধের রুটগুলি সাথে অক্ষম করতে পারেন:

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

সোর্স কোড থেকে এটি কীভাবে কাজ করে তা আপনি দেখতে পাবেন: src / Illuminate / রাউটিং / রাউটার.এফপি


1
আমার মতে এটি সঠিক উত্তর। ভাল লাগল!
রিক কইলম্যান

26

সংস্করণ 5.3 এর জন্য পদ্ধতি 1

লারাভেল 5.3 এ আথকন্ট্রোলার নেই। নিবন্ধক রুট অক্ষম করতে আপনার নির্মাণকারী পরিবর্তন করা উচিতRegisterController :

আপনি ফর্ম পরিবর্তন করতে পারেন:

public function __construct()
{

    $this->middleware('guest');

}

প্রতি:

use Illuminate\Support\Facades\Redirect;

public function __construct()
{

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

}

দ্রষ্টব্য: ব্যবহারের জন্য Redirect ভুলে যাবেন না user Redirect; তাই https: // होস্ট_নামে / ব্যবহারকারীর অ্যাক্সেসটিকে "/" এ পুনর্নির্দেশ করা হবে।

সংস্করণ 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');

ধন্যবাদ! আমি আশা করি এটি আপনার সমস্যার সমাধান করতে পারে।


আমি বিক্রেতার / লারাভেল / ফ্রেমওয়ার্ক / এসসিআর / আলোকসজ্জা / রাউটিং / রাউটার.এফপি রুটে নির্দিষ্ট করা রুটের নাম যুক্ত করব: "('লগইন', 'আথ \ লগইনকন্ট্রোলার @ শোলোগিনফর্ম') -> নাম ('লগইন'); রুট :: পোস্ট ('লগইন', 'আথ \ লগইনকন্ট্রোলার @ লগইন'); রুট :: পোস্ট ('লগআউট', 'আথ \ লগইনকন্ট্রোলার @ লগআউট') -> নাম ('লগআউট');
লুসিয়ানো ফ্যান্টুজি

পুনর্নির্দেশ ক্লাসটি প্রথম পদ্ধতি থেকে মিস হয়েছে তবে পরিবর্তিত হচ্ছে $this->middleware('auth');- কাজ করে!
গেদিমিনাস

12

GetRegister এবং পোস্টরেজিস্টারকে ওভাররাইটিং করা জটিল - আপনি যদি গিট ব্যবহার করছেন তবে উচ্চ সম্ভাবনা রয়েছে .gitignore ফ্রেমওয়ার্ক ফাইলগুলিকে উপেক্ষা করতে সক্ষম হয় যা ফলাফলের দিকে নিয়ে যায় যে আপনার উত্পাদন পরিবেশে এখনও নিবন্ধকরণ সম্ভব হবে (উদাহরণস্বরূপ সুরকারের মাধ্যমে যদি লারাভেল ইনস্টল করা থাকে) )

আরেকটি সম্ভাবনা হ'ল রুট.এফপি ব্যবহার করে এবং এই লাইনটি যুক্ত করা:

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

এইভাবে ফ্রেমওয়ার্ক ফাইলগুলি একা ছেড়ে যায় এবং কোনও অনুরোধ এখনও ফ্রেমওয়ার্ক রেজিস্টার মডিউল থেকে দূরে সরিয়ে ফেলা হবে।


4
ফ্রেমওয়ার্ক পদ্ধতিগুলিকে ওভাররাইড করে এমন ক্লাসগুলি ফ্রেমওয়ার্কে নেই (সেগুলি অ্যাপ্লিকেশন ফোল্ডারে থাকবে) এবং গিট দ্বারা সংরক্ষণ করা হবে। ওভাররাইডিং পদ্ধতিগুলির অর্থ এই নয় যে আপনি তাদের ফ্রেমওয়ার্ক ফাইলগুলিতে পরিবর্তন করুন।
দতাশমন

11

AuthController.php@Limonte উপেক্ষিত হয়েছে হয় App\Http\Controllers\Auth, বিক্রেতা ডিরেক্টরির মধ্যে না, তাই এলেবেলে এই পরিবর্তন উপেক্ষা করে না।

আমি এই ফাংশন যুক্ত করেছি:

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

এটি গ্রহণযোগ্য উত্তরে মার্জ করা উচিত, তবে কেবল একটি ছোট্ট সংশোধন। এই বৈশিষ্ট্যটি
লারাভেল

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বিন্যাসের সমস্ত দৃষ্টান্ত মুছে ফেলেছেন বা লারাভেল একটি ত্রুটি ফেলে দেবে।


এই। এই রুটগুলি যদি কখনও পরিবর্তিত হয় তবে @ github.com/laravel/framework/blob/… অবস্থিত অথ রুটের বান্ডিলগুলি কেবল এগুলি অনুলিপি করুন / আটকান এবং নিবন্ধকরণের রুটগুলি সম্পর্কে মন্তব্য করুন।
পবন্ড 4'17

7

নিম্নলিখিত পদ্ধতিটি দুর্দান্ত কাজ করে:

সমস্ত রুট অনুলিপি করুন /vendor/laravel/framework/src/Illuminate/Routing/Router.phpএবং এতে আটকান web.phpএবং মন্তব্য করুন বা মুছুন Auth::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');

এটি পূর্ববর্তী কয়েকটি উত্তরগুলির উল্লেখযোগ্যভাবে রাফল জি এবং ড্যানিয়েল সেন্টোরের সংমিশ্রণ।


6

লার্যাভেল 5.6 এবং তারপরে আপনি ওয়েব.এফপি ফাইলটিতে সম্পাদনা করতে পারবেন

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

পুনঃনির্দেশ :: থেকে () ব্যবহার করে আমাকে একটি ত্রুটি দিয়েছে:

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

আপনাকে ধন্যবাদ, হ্যাঁ এটি নতুন সংস্করণ বৈশিষ্ট্য, আপনি এই ফাংশনটি ব্যবহার করতে পারেন বা পূর্ববর্তী শ্রেণি ব্যবহার করতে পারেন, তবে পূর্ববর্তী শ্রেণীর প্রয়োজন it এর আগে, আমার অর্থ \ পুনঃনির্দেশ :: to ('গন্তব্য');
মিলাদ রহিমি

3

লারাভেলে 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

লারাভেল 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);

\\\\\\\\\\\\\\\\\\\\ শুধু একটি এফওয়াইআই /////////////////////////////// ////

যদি আপনার একাধিক প্রমাণীকরণ যেমন ব্যবহারকারী, সদস্য, শিক্ষার্থী, অ্যাডমিন ইত্যাদির জন্য লেখক তৈরি করতে হয় তবে আমি আপনাকে পরামর্শ দিচ্ছি যে এই হেস্টো / মাল্টি-আউথ চেকআউট করার জন্য এটি L5 অ্যাপ্লিকেশনগুলিতে সীমাহীন লেখকগুলির জন্য একটি দুর্দান্ত প্যাকেজ।

আপনি প্রমাণীকরণ পদ্ধতি এবং এর সাথে সংশ্লিষ্ট অন্যান্য ফাইল abouth আরও পড়তে পারেন এই কাজের মধ্যে থাকবেন।


2
পোস্ট অনুরোধের মাধ্যমে ব্যবহারকারীর নিবন্ধন এড়াতে আপনাকে পোস্টের রুটটিও প্যাচ করতে হবে।
বৈষ্ণব মহেত্রে

2

লারাভেলে 5.5

আমি লারাভেল 5.5 তে একই সমস্যাটি সম্পাদনের চেষ্টা করছিলাম। Auth::routes()ওয়েব.এফপি রুটের ফাইলগুলিতে ব্যবহার না করে আমি কেবল লগইন / লগআউট রুটগুলি অন্তর্ভুক্ত করেছি:

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

2

এটি পূর্ববর্তী মন্তব্যে উল্লেখ করা হয়েছে তবে আমি স্পষ্ট করে বলতে চাই যে লারাভেল ^ 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...
]);

1

আপনার ওয়েব.এফপি তে নিবন্ধের রুটটি মিথ্যা সেট করুন ।

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

0

কোডটি যেমন হয় তেমন পরিবর্তন না করার জন্য, অনুরোধ ইউআরএল ইউআরএল ('রেজিস্টার') কিনা তা সনাক্ত করার জন্য কেবল একটি মিডলওয়্যার তৈরি করুন, তারপরে 404 এ পুনর্নির্দেশ করুন বা যেখানেই করুন do


1
খুব দীর্ঘ রান সমাধান। গর্ভপাত সহ একটি সাধারণ ফাংশন ওভাররাইড অবশ্যই কাজ করতে পারে।
বৈষ্ণব মহেত্রে

0

লারাভেলে 5.5

অনুরূপ ইস্যুতে কাজ করা এবং মিডলওয়্যার আর্গুমেন্টটি অতিথির থেকে 'লেখক'-এ সেট করা আরও মার্জিত সমাধানের মতো বলে মনে হয়েছিল।

ফাইল সম্পাদনা করুন: অ্যাপ্লিকেশন-> http-> কন্ট্রোলার-> এথ-> RegisterController.php

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

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

যদিও আমি ভুল হতে পারি ... তবে পৃষ্ঠাটি পুনর্নির্দেশের চেয়ে আরও বেশি লাইন এবং কম লজ্জা সহ রাউটিং সম্পাদনা করার চেয়ে এটি আরও চটচটে বলে মনে হচ্ছে ... কমপক্ষে এই ক্ষেত্রে অতিথিদের জন্য নিবন্ধকরণ লক করতে চাই।


কোনও ব্যবহারকারী এই পদ্ধতিটি ব্যবহার করে একাধিকবার নিবন্ধন করতে পারবেন কিনা তা জানতে আগ্রহী হব। guestমিডলওয়্যার দায়ী পুনঃনির্দেশ ইতিমধ্যেই যে শুধুমাত্র একটি গেস্ট অ্যাক্সেস করতে পারবেন (অর্থাত একটি পৃষ্ঠা থেকে চলে যান ব্যবহারকারী লগ ইন থাকলেও /registerপৃষ্ঠা)
কিংসলে

0

আমি মনে করি এটি বরং আরও ভাল সমাধান হবে।

নীচে উল্লিখিত হিসাবে নিম্নলিখিত পদ্ধতিগুলি ওভাররাইড করুন

অ্যাপ \ http \ কন্ট্রোলার \ প্রমাণীকরণ \ 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

লারাভেল 5.5 খুব সহজ, আপনি যদি CRUD রুট সিস্টেম ব্যবহার করেন।

app/http/controllers/RegisterController নাম স্থান আছে সেখানে যান :Illuminate\Foundation\Auth\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

আমি লারাভেল 5.6 এ এটি সবচেয়ে সহজ সমাধান হিসাবে খুঁজে পেয়েছি! এটি thyite.com নিবন্ধন করে thyite.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

লারাভেল 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


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.