লারাভেল লগইন করার পরে মূল গন্তব্যে পুনর্নির্দেশ করে


189

এটি দেখতে সুন্দর বুনিয়াদি প্রবাহের মতো মনে হচ্ছে এবং Laravelমৌলিক বিষয়গুলির জন্য অনেকগুলি দুর্দান্ত সমাধান রয়েছে, আমার মনে হচ্ছে আমি কিছু মিস করছি।

একজন ব্যবহারকারী এমন লিঙ্কে ক্লিক করেন যা প্রমাণীকরণের প্রয়োজন। লারাভেলের লেখক ফিল্টার কিক করে এবং তাদের লগইন পৃষ্ঠায় নিয়ে যায়। ব্যবহারকারীরা লগ ইন করে, তারপরে তারা মূল পৃষ্ঠায় যায় যে তারা 'লেখক' ফিল্টারটি লাথি মারার আগে তারা যাবার চেষ্টা করেছিল।

তারা কোন পৃষ্ঠাটি মূলত পেতে চেষ্টা করছে তা জানার কি কোনও ভাল উপায় আছে? যেহেতু লারাভেল সেই অনুরোধটিকেই বাধা দিচ্ছে, তাই ব্যবহারকারীরা লগ ইন করার পরে এটি সহজে রাউটিংয়ের জন্য কোথাও ট্র্যাক রাখে কিনা আমি জানতাম না।

যদি তা না হয়, আপনারা কেউ কেউ কীভাবে এটি ম্যানুয়ালি প্রয়োগ করেছেন তা আমি শুনতে আগ্রহী।

উত্তর:


234

লারাভেল 5.3 এবং তারপরের জন্য

স্কট এর উত্তর নীচে পরীক্ষা করুন ।

লারাভেল 5 এর জন্য 5.2 পর্যন্ত

সহজভাবে করা,

লেখক মিডলওয়্যার:

// redirect the user to "/login"
// and stores the url being accessed on session
if (Auth::guest()) {
    return redirect()->guest('login');
}
return $next($request);

লগইন ক্রিয়াকলাপে:

// redirect the user back to the intended page
// or defaultpage if there isn't one
if (Auth::attempt(['email' => $email, 'password' => $password])) {
    return redirect()->intended('defaultpage');
}

লারাভেল 4 (পুরানো উত্তর) এর জন্য

এই উত্তরের সময় ফ্রেমওয়ার্ক থেকে নিজেই কোনও সরকারী সমর্থন ছিল না। আজকাল আপনি ব্যবহার করতে পারেনপদ্ধতিটি নীচে বিজিডিআরএল দ্বারা নির্দেশিতএই পদ্ধতি: (আমি তার উত্তর আপডেট করার চেষ্টা করেছি, তবে মনে হয় সে গ্রহণ করবে না)

লেখক ফিল্টার এ:

// redirect the user to "/login"
// and stores the url being accessed on session
Route::filter('auth', function() {
    if (Auth::guest()) {
        return Redirect::guest('login');
    }
});

লগইন ক্রিয়াকলাপে:

// redirect the user back to the intended page
// or defaultpage if there isn't one
if (Auth::attempt(['email' => $email, 'password' => $password])) {
    return Redirect::intended('defaultpage');
}

লারাভেল 3 এর জন্য (আরও পুরানো উত্তর)

আপনি এটি এভাবে প্রয়োগ করতে পারেন:

Route::filter('auth', function() {
    // If there's no user authenticated session
    if (Auth::guest()) {
        // Stores current url on session and redirect to login page
        Session::put('redirect', URL::full());
        return Redirect::to('/login');
    }
    if ($redirect = Session::get('redirect')) {
        Session::forget('redirect');
        return Redirect::to($redirect);
    }
});
// on controller
public function get_login()
{
    $this->layout->nest('content', 'auth.login'); 
}

public function post_login()
{
    $credentials = [
        'username' => Input::get('email'),
        'password' => Input::get('password')
    ];

    if (Auth::attempt($credentials)) {
        return Redirect::to('logged_in_homepage_here');
    }

    return Redirect::to('login')->with_input();
}

সেশনে পুনঃনির্দেশটি সংরক্ষণ করার পক্ষে এটি চালিয়ে যাওয়ার সুবিধা রয়েছে এমনকি যদি ব্যবহারকারী তার শংসাপত্রগুলি মিস করে বা তার কোনও অ্যাকাউন্ট না থাকে এবং সাইন আপ করতে হয়।

এটি আথ ছাড়াও অন্য যে কোনও কিছুকে সেশনে পুনর্নির্দেশ সেট করার অনুমতি দেয় এবং এটি যাদুতে কাজ করবে।


এটি রাখা এবং ভুলে যাওয়ার চেয়ে অধিবেশনটিতে ফ্ল্যাশ করা আরও কী বোঝায় না? আপনার লগইন ক্রিয়াটি সেশনে মানটিতে পুনর্নির্দেশের উপস্থিতি উপস্থিত থাকে যদি তা উপস্থিত থাকে বা অন্যথায় ডিফল্ট পৃষ্ঠা থাকে।
বিলালক

2
কেন এটি ফ্ল্যাশের চেয়ে ভাল তা উত্তর দেওয়ার জন্য আমি উত্তরটি সম্পাদনা করেছি।
vFragosop

এটা বোধগম্য. প্রতিবার রিফ্লেশ করার চেয়ে ভাল।
বিলালক

1
যখন আথ :: প্রচেষ্টা () পাস হয়ে যায়, আপনি কেবলমাত্র ব্যবহারকারীকে ডিফল্ট পৃষ্ঠায় (সাধারণত তার বাড়ি) পুনর্নির্দেশ করতে পারেন। সেই পুনঃনির্দেশটি আবার সেই ফিল্টারটির মধ্য দিয়ে চলে যাবে এবং যদি এটি থাকে তবে এটি তাকে অনুরোধ করা মূল URL এ পুনর্নির্দেশ করবে। অন্যথায়, এটি কেবল তার বাড়ীতে রেন্ডারিং চালিয়ে যাবে। আমি লগইন ক্রিয়া একটি উদাহরণ রাখব।
vFragosop

1
5.1 এ এটি মিডওয়্যার রেডিরেক্টআইফএফটিসেন্টিটেড.এফপি মধ্যে রয়েছে: যদি ($ এই-> লেখক-> চেক ()) {পুনঃনির্দেশ ('/ ব্যক্তিগত পৃষ্ঠায়') ফেরান; }
ডেভ ড্রাইসম্যানস

72

লারাভেল> = 5.3

5.3-এ আথ পরিবর্তনের ফলে এটি প্রয়োগ করা কিছুটা সহজ এবং 5.2 এর থেকে কিছুটা পৃথক হয়েছে যেহেতু আথ মিডলওয়্যার পরিষেবা পাত্রে স্থানান্তরিত হয়েছে।

নতুন মিডলওয়্যার এথ রিডাইরেক্টর সংশোধন করুন

/app/Http/Middleware/RedirectIfAuthenticated.php

হ্যান্ডেল ফাংশনটি সামান্য পরিবর্তন করুন, সুতরাং দেখে মনে হচ্ছে:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect()->intended('/home');
    }

    return $next($request);
}

টিএল; ডিআর ব্যাখ্যা

পার্থক্যটি 4 র্থ লাইনে; ডিফল্টরূপে এটি দেখতে এরকম দেখাচ্ছে:

return redirect("/home");

যেহেতু লারাভেল> = 5.3 অথ গার্ডটি পরীক্ষা করার সময় স্বয়ংক্রিয়ভাবে শেষ "অভিযুক্ত" রুটটি সংরক্ষণ করে, এতে এতে পরিবর্তন হয়:

return redirect()->intended('/home');

এটি লারাভেলকে লগইনের আগে শেষ উদ্দেশ্য পৃষ্ঠাতে পুনর্নির্দেশ করতে বলে, অন্যথায় "/ হোম" বা আপনি যেখানেই সেগুলি ডিফল্টরূপে প্রেরণ করতে চান সেখানে যান।

আশা করি এটি অন্য কাউকে সহায়তা করে - 5.2 এবং 5.3 এর মধ্যে পার্থক্য খুব বেশি নেই এবং বিশেষত এই অঞ্চলে বেশ কয়েকটি রয়েছে।


2
লারাভেল .4.৪ এর জন্য এটি আর কাজ করছে না ... কোনও ধারণা নেই?
অ্যালেক্স টোডার

আমি return redirect()->intended(RouteServiceProvider::HOME);আপনার বাড়ির পথ এক জায়গায় রাখতে ব্যবহার করব ।
ম্যাটিউজ

26

আমি সেই দুটি দুর্দান্ত পদ্ধতি পেয়েছি যা সম্ভবত আপনার পক্ষে অত্যন্ত সহায়ক।

Redirect::guest();
Redirect::intended();

প্রমাণীকরণের প্রয়োজন এমন রুটে আপনি এই ফিল্টারটি প্রয়োগ করতে পারেন।

Route::filter('auth', function()
{
    if (Auth::guest()) {
           return Redirect::guest('login');
    }
});

এই পদ্ধতিটি মূলত এটি যে পৃষ্ঠায় আপনি দেখার চেষ্টা করছেন তা সংরক্ষণ করে এবং এটি আপনাকে লগইন পৃষ্ঠাতে পুনঃনির্দেশ করে ।

যখন ব্যবহারকারী প্রমাণীকৃত হয় আপনি কল করতে পারেন

return Redirect::intended();

এবং এটি আপনাকে প্রথমে যে পৃষ্ঠায় পৌঁছানোর চেষ্টা করেছিলেন তা আপনাকে পুনর্নির্দেশ করে।

এটি করার একটি দুর্দান্ত উপায় যদিও আমি সাধারণত নীচের পদ্ধতিটি ব্যবহার করি।

Redirect::back()

আপনি এই দুর্দান্ত ব্লগটি চেক করতে পারেন ।


এটি উপরের সমাধানগুলির চেয়ে অনেক ভাল। উপরের সমাধানগুলির জন্য লগইন ফাংশনটি বন্ধ করতে সক্ষম হওয়া দরকার যা আমি ৪.১ দিয়ে করতে পারি না। তবে এটি ছিল অনেক সহজ এবং হিসাবে কাজ করেছে।
ব্যবহারকারী 2662680

20

আপনি পুনঃনির্দেশ :: উদ্দেশ্যে ফাংশন ব্যবহার করতে পারেন । এটি ব্যবহারকারীকে সেই ইউটিএল-এ পুনঃনির্দেশিত করবে যা তারা প্রমাণীকরণ ফিল্টার দ্বারা ধরা পড়ার আগে অ্যাক্সেসের চেষ্টা করেছিল। যদি উদ্দেশ্যযুক্ত ডেসটিন্যাটন না পাওয়া যায় তবে এই পদ্ধতিতে একটি ফ্যালব্যাক ইউআরআই দেওয়া যেতে পারে।

পোস্ট লগইন / নিবন্ধনে:

return Redirect::intended('defaultpageafterlogin');

11

আমি আমার ভাষা নির্বাচনকারী কোডটিতে কিছু সময়ের জন্য এটি ব্যবহার করে আসছি। যতক্ষণ না আপনার কেবল 1 পৃষ্ঠার মাধ্যমে ফিরে যেতে হবে এটি ঠিকঠাক কাজ করে:

return Redirect::to(URL::previous());

এটি সেখানে সবচেয়ে শক্তিশালী সমাধান নয় তবে এটি অতি-সহজ এবং কয়েকটি ধাঁধা সমাধান করতে সহায়তা করতে পারে। :)


5
হ্যাঁ পূর্ববর্তী () ভাল কাজ করে। তবে যদি আপনার প্রথম লগইন প্রচেষ্টা ব্যর্থ হয় (সুতরাং 'লগইন ব্যর্থ' পৃষ্ঠাটি আপনার পূর্ববর্তী পৃষ্ঠায় পরিণত হয়) এবং দ্বিতীয় লগইন প্রচেষ্টা সফল হয় তবে আপনাকে আবার লগইন পৃষ্ঠাতে পুনর্নির্দেশ করা হবে (যা আপনাকে হোম পৃষ্ঠায় পুনর্নির্দেশ করতে পারে)।
শ্রীগনেশ শিন্ত্রে

11

আপনার লগইনকন্ট্রোলার নির্মাতাকে এতে পরিবর্তন করুন:

public function __construct()
    {
        session(['url.intended' => url()->previous()]);
        $this->redirectTo = session()->get('url.intended');

        $this->middleware('guest')->except('logout');
    }

এটি আপনাকে লগইন পৃষ্ঠার আগে পৃষ্ঠায় ফিরে যাবে (2 পৃষ্ঠাগুলি পিছনে)।


একমাত্র আমার জন্য কাজ করে। এর অর্থ অবশ্যই আমার অন্য কোথাও পুনর্নির্দেশ ঘটছে তবে কে কোথায় জানে।
আর্থার তারাসভ

8
return Redirect::intended('/');

এটি আপনাকে আপনার প্রকল্পের ডিফল্ট পৃষ্ঠায় অর্থাৎ সূচনা পৃষ্ঠায় পুনর্নির্দেশ করবে।



5

লারাভেল ঘ

আমি আপনার (ভিনসিয়াস ফ্রেগোসো পিনহেরো) কোডটি সামান্য ট্যুইক করেছি এবং নীচেরগুলি ফিল্টার.এফপিতে রেখেছি

Route::filter('auth', function()
{
    // If there's no user authenticated session
    if (Auth::guest()) {
        // Flash current url to session and redirect to login page
        Session::flash('redirect', URL::full());
        return Redirect::guest('login');
    }
});

এবং তারপরে আমার AuthController.php এর মধ্যে:

// Try to log the user in.
if (Auth::attempt($userdata)) {

    if ($redirect = Session::get('redirect')) {
        return Redirect::to($redirect);
    } else {
        // Redirect to homepage
        return Redirect::to('your_default_logged_in_page')->with('success', 'You have logged in successfully');
    }
} else {
    // Reflash the session data in case we are in the middle of a redirect 
    Session::reflash('redirect');

    // Redirect to the login page.
    return Redirect::to('login')->withErrors(['password' => 'Password invalid'])->withInput(Input::except('password'));
}

লক্ষ্য করুন যে 'redirect' যদি কোনও প্রমাণীকরণের সমস্যা থাকে সেশন ডেটাটি পুনঃচলাচল করা হয়। এটি কোনও লগইন দুর্ঘটনার সময় পুনর্নির্দেশ অক্ষত রাখে, তবে ব্যবহারকারী যদি কোনও মুহূর্তে দূরে ক্লিক করেন তবে পরবর্তী লগইন প্রক্রিয়াটি সেশন ডেটা দ্বারা ব্যাহত হবে না।

আপনারটিতে লগইন ফর্মটি দেখানোর সময়ে আপনাকে ডেটা পুনঃপ্রকাশ করতে হবে AuthController, অন্যথায় চেইনটি ভেঙে গেছে:

public function showLogin()
{
    // Reflash the session data in case we are in the middle of a redirect 
    Session::reflash('redirect');

    // Show the login page
    return View::make('auth/login');
}


0

লার্ভেল 5.3 এটি কেবল লগইনকন্ট্রোলআরপিপি আপডেট করে আমার পক্ষে কাজ করেছে

 use Illuminate\Support\Facades\Session;
 use Illuminate\Support\Facades\URL;


public function __construct()
{
    $this->middleware('guest', ['except' => 'logout']);
    Session::set('backUrl', URL::previous());
}


public function redirectTo()
{
    return Session::get('backUrl') ? Session::get('backUrl') :   $this->redirectTo;
}

রেফ: https://laracasts.com/discuss/channels/laravel/redirect-to-pre स्पष्ट-page- after- login


0

জন্য Laravel 5.5 এবং সম্ভবত 5.4

ইন অ্যাপ \ http \ মিডলওয়্যার \ RedirectIfAuthenticated পরিবর্তন redirect('/home')করতে redirect()->intended('/home')হ্যান্ডেল ফাংশনে:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect()->intended('/home');
    }

    return $next($request);
}

মধ্যে অ্যাপ \ http \ কন্ট্রোলার \ প্রমাণীকরণ \ LoginController তৈরি showLoginForm()নিম্নরূপ ফাংশন:

public function showLoginForm()
{
    if(!session()->has('url.intended'))
    {
        session(['url.intended' => url()->previous()]);
    }
    return view('auth.login');
}

এইভাবে যদি অন্য পৃষ্ঠার জন্য কোনও উদ্দেশ্য ছিল তবে এটি সেখানে পুনর্নির্দেশ করবে অন্যথায় এটি বাড়ি পুনর্নির্দেশ করবে।


0

আমি লারাভেল ৫. for এর জন্য কাস্টম লগইন নিয়ামক এবং মিডলওয়্যার সহ নিম্নলিখিত পদ্ধতিটি ব্যবহার করছি, তবে আমি আশা করি যে ল্যারাভেল 5 সংস্করণে যে কোনওটিতে কাজ করে

  • মিডলওয়্যার ভিতরে

    if (Auth::check()){
        return $next($request);
    }
    else{
      return redirect()->guest(route('login'));
    }
  • ভিতরে নিয়ামক লগইন পদ্ধতি

    if (Auth::attempt(['email' => $email, 'password' => $password])) {
    return redirect()->intended('/default');
    }
  • আপনার যদি ক্লায়েন্ট পক্ষের উদ্দেশ্যে ইউআরএলটি পাস করার প্রয়োজন হয় তবে আপনি নিম্নলিখিতগুলি চেষ্টা করতে পারেন

       if (Auth::attempt(['username' => $request->username, 'password' => $request->password])) {
           $intended_url= redirect()->intended('/default')->getTargetUrl();
           $response = array(
          'status' => 'success',
          'redirectUrl' => $intended_url,
          'message' => 'Login successful.you will be redirected to home..', );
          return response()->json($response);
        } else {
            $response = array(
          'status' => 'failed',
          'message' => 'username or password is incorrect', );
         return response()->json($response);
        }

0

প্রথমত, আপনার জানা উচিত, আপনি কীভাবে ব্যবহারকারীদের 'লগইন' রুটে পুনঃনির্দেশ করেন:

return redirect()->guest('/signin');

এটার মত না:

return redirect()->intended('/signin');

0

লারাভেল এখন এই বৈশিষ্ট্যটিকে বাইরের বাইরে সমর্থন করে! (আমি 5.5 বা তার আগের দিক থেকে বিশ্বাস করি)।

নীচে প্রদর্শিত হিসাবে __construct()আপনার একটি পদ্ধতি যুক্ত করুন Controller:

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

লগইন করার পরে, আপনার ব্যবহারকারীরা সেই পৃষ্ঠায় পুনর্নির্দেশ করা হবে যা তারা প্রাথমিকভাবে দেখার জন্য চান to

আপনার অ্যাপ্লিকেশন যুক্তি অনুসারে আপনি লারাভেলের ইমেল যাচাইকরণ বৈশিষ্ট্যটি যুক্ত করতে পারেন:

public function __construct()
{
    $this->middleware(['auth', 'verified']);
}

নথিতে খুব সংক্ষিপ্ত উদাহরণ রয়েছে:

মিডলওয়্যার ব্যবহার except বা onlyবিকল্পের মাধ্যমে কোন নিয়ন্ত্রণকারীর পদ্ধতি প্রয়োগ করে তা চয়ন করাও সম্ভব ।

এর সাথে উদাহরণ except:

public function __construct()
{
    $this->middleware('auth', ['except' => ['index', 'show']]);
}

এর সাথে উদাহরণ only:

public function __construct()
{
    $this->middleware('auth', ['only' => ['index', 'show']]);
}

সম্পর্কে আরও তথ্য exceptএবং onlyমিডলওয়্যার বিকল্পগুলি:


0

আপনি যদি অক্ষ বা অন্যান্য এজেএক্স জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করছেন তবে আপনি url পুনরুদ্ধার করতে এবং সামনের প্রান্তে যেতে চাইতে পারেন

আপনি নীচের কোড দিয়ে এটি করতে পারেন

   $default = '/';

   $location = $request->session()->pull('url.intended', $default);

    return ['status' => 200, 'location' => $location];

এটি একটি জসন ফর্ম্যাট স্ট্রিংটি ফিরিয়ে দেবে


0

লারাভেল 5.8 এ

অ্যাপ্লিকেশন \ এইচটিটিপি \ কন্ট্রোলারস uth এথ \ লগইনকন্ট্রোলার নিম্নলিখিত পদ্ধতি যুক্ত করুন

public function showLoginForm()
{
    if(!session()->has('url.intended'))
        {
            session(['url.intended' => url()->previous()]);
        }
    return view('auth.login');
}

অ্যাপ্লিকেশনটিতে \ এইচটিটিপি \ মিডলওয়্যার \ রিডাইরেক্টআইফএফটিসেন্টিটেড প্রতিস্থাপন "রিটার্ন রিডাইরেক্ট ('/ হোম'));"

 if (Auth::guard($guard)->check()) 
    {
        return redirect()->intended();
    }

-1

আপনি কি নিজের রুটস.এফপি-তে এটি ব্যবহার করে দেখেছেন?

Route::group(['middleware' => ['web']], function () {
    //
    Route::get('/','HomeController@index');
});

-1
       // Also place this code into base controller in contract function,            because ever controller extends base  controller
 if(Auth::id) {
  //here redirect your code or function
 }
if (Auth::guest()) {
       return Redirect::guest('login');
}

2
আপনার কোডের সাথে কিছু প্রসঙ্গ সরবরাহ করতে দয়া করে কিছু ভাষ্য সরবরাহ করুন। ধন্যবাদ
স্যুভার

-1

5.1 এর জন্য এখানে আমার সমাধান। পোস্টের "লাইক" বোতামটি ক্লিক করার জন্য, লগইন করতে পুনঃনির্দেশিত হওয়া, তারপরে মূল পৃষ্ঠায় ফিরে যাওয়ার জন্য আমার কারও দরকার ছিল। যদি তারা ইতিমধ্যে লগ ইন করে hrefথাকে তবে "লাইক" বোতামটি জাভাস্ক্রিপ্টের সাথে বাধা পেয়ে একটি এজেএক্স অনুরোধে রূপান্তরিত হয়েছিল।

বোতামটি এমন কিছু <a href="https://stackoverflow.com/like/931">Like This Post!</a>। মিডলওয়্যার /like/931প্রয়োজন এমন লাইককন্ট্রোলার দ্বারা পরিচালিত হয় auth

প্রমাণীকরণের মিডলওয়্যার ( handle()ফাংশন) এ, শুরুতে এই জাতীয় কিছু যুক্ত করুন:

    if(!str_contains($request->session()->previousUrl(), "/auth/login")) {
        $request->session()->put('redirectURL', $request->session()->previousUrl());
        $request->session()->save();
    }

/auth/loginআপনার ইউআরএল লগ ইন করার জন্য যা কিছু আছে তা পরিবর্তন করুন This URL টি লগইন URL না হওয়া পর্যন্ত এই কোডটি সেশনে মূল পৃষ্ঠার URL সংরক্ষণ করে। এটি প্রয়োজনীয় কারণ এটি প্রদর্শিত হয় যেন এই মিডওয়্যারটিকে দু'বার ডাকা হয়। কেন বা যদি সত্য হয় তবে আমি নিশ্চিত নই। তবে আপনি যদি এই শর্তসাপেক্ষে পরীক্ষা না করেন তবে এটি সঠিক মূল পৃষ্ঠার সমান হবে এবং তারপরে কোনওভাবে তা অনুসরণ করা হবে /auth/login। এটি করার জন্য আরও একটি মার্জিত উপায় আছে।

তারপরে, LikeControllerবা যে কোনও কন্ট্রোলারে আপনার কাছে যেটি মূল পৃষ্ঠায় চাপ দেওয়া বোতামটির URL টি পরিচালনা করে:

//some code here that adds a like to the database
//...
return redirect($request->session()->get('redirectURL'));

এই পদ্ধতিটি অত্যন্ত সাধারণ, কোনও বিদ্যমান ফাংশনকে ওভাররাইড করার প্রয়োজন হয় না এবং দুর্দান্ত কাজ করে। এটি করার জন্য লারাভেলের পক্ষে আরও কিছু সহজ উপায় রয়েছে তবে এটি কী তা আমি নিশ্চিত নই। intended()ফাংশনটি ব্যবহার করা আমার ক্ষেত্রে কাজ করে না কারণ লাইককন্ট্রোলারটি এটিও জানতে চেয়েছিল যে পূর্ববর্তী ইউআরএল এটিতে পুনর্নির্দেশ করার জন্য কী ছিল। পুনঃনির্দেশের মূলত দুটি স্তরের পিছনে।


-1

লারাভেল 5.2 এর জন্য (পূর্ববর্তী সংস্করণগুলি আমি ব্যবহার করি নি)

ফাইল অ্যাপ্লিকেশনটিতে কোডটি আটকান \ এইচটিটিপি \ কন্ট্রোলারস \ অউথ \ অরকন্ট্রোলআরএফপি

   /**
 * Overrides method in class 'AuthenticatesUsers'
 *
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
public function showLoginForm()
{
    $view = property_exists($this, 'loginView')
        ? $this->loginView : 'auth.authenticate';
    if (view()->exists($view)) {
        return view($view);
    }
    /**
     * seve the previous page in the session
     */
    $previous_url = Session::get('_previous.url');
    $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    $ref = rtrim($ref, '/');
    if ($previous_url != url('login')) {
        Session::put('referrer', $ref);
        if ($previous_url == $ref) {
            Session::put('url.intended', $ref);
        }
    }
    /**
     * seve the previous page in the session
     * end
     */
    return view('auth.login');
}
/**
 * Overrides method in class 'AuthenticatesUsers'
 *
 * @param Request $request
 * @param $throttles
 *
 * @return \Illuminate\Http\RedirectResponse
 */
protected function handleUserWasAuthenticated(Request $request, $throttles)
{
    if ($throttles) {
        $this->clearLoginAttempts($request);
    }
    if (method_exists($this, 'authenticated')) {
        return $this->authenticated($request, Auth::guard($this->getGuard())->user());
    }
    /*return to the previous page*/
    return redirect()->intended(Session::pull('referrer'));
    /*return redirect()->intended($this->redirectPath()); /*Larevel default*/
}

এবং নামস্থান আমদানি করুন: use Session;

যদি আপনি ফাইল অ্যাপ্লিকেশন \ এইচটিটিপি \ কন্ট্রোলারস \ আথ \ অরহকন্ট্রোলআরপিএফ-তে কোনও পরিবর্তন না করেন তবে আপনি কেবল এটি গিটহাব থেকে ফাইলের সাথে প্রতিস্থাপন করতে পারেন


-1

লারাভেল 5.2

আপনি যদি অ্যাডমিন মিডলওয়্যারের মতো অন্য কোনও মিডলওয়্যার ব্যবহার করেন তবে আপনি নিম্নলিখিতটি ব্যবহার করে url.intended এর জন্য একটি সেশন সেট করতে পারেন :

\Session::put('url.intended', \URL::full());পুনঃনির্দেশের জন্য আমাদের ম্যানুয়ালি সেট করতে হবে ।

উদাহরণ

  if (\Auth::guard($guard)->guest()) {
      if ($request->ajax() || $request->wantsJson()) {
         return response('Unauthorized.', 401);
      } else {
        \Session::put('url.intended', \URL::full());
        return redirect('login');
      }
  }

লগইন প্রয়াসে

লগইন প্রচেষ্টা ব্যবহারের বিষয়ে নিশ্চিত করুন return \Redirect::intended('default_path');


এটা কি redirect()->guest('login')জন্য।
এমিল বার্গারন

-1

লারাভেল ৫.7 এর জন্য আপনাকে এগুলিতে পরিবর্তন করতে হবে:

মিডলওয়্যার> RedirectIfAuthenticated.php

এই পরিবর্তন:

public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/admin');
        }

        return $next($request);
    }

এটি:

public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/yourpath');
        }

        return $next($request);
    }

পুনঃনির্দেশ ('/ আপনারপথ');


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