2017-10-27 25 views
5

मेरे पास दो अलग-अलग टेबल के साथ दो लॉगिन फॉर्म हैं। एक /login मार्ग के साथ डिफ़ॉल्ट है और दूसरे के पास /myportal है। मेरे पास अतिरिक्त लॉगिन नियंत्रकरीडायरेक्ट अगर प्रमाणीकृत रीडायरेक्ट अन्य लॉगिन फॉर्म खोलने का प्रयास

protected $redirectTo = '/student-home'; 
    public function showLoginForm() 
    { 
     return view('my_portal'); 
    } 

    public function logout(Request $request) 
    { 
     $this->guard()->logout(); 
     $request->session()->flush(); 
     $request->session()->regenerate(); 
     return redirect('/my_portal'); 
    } 

    protected function guard() 
    { 
     return Auth::guard('web_student'); 
    } 

    public function username() 
    { 
     return 'username'; 
    } 

यह लॉगिन ठीक काम कर रहा है। लेकिन, मुझे RedirectIfAuthenticated

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

     else if(Auth::guard('web_student')->check()) 
     { 
      return redirect('student-home'); 
     } 
     return $next($request); 
    } 

अब साथ समस्या हो रही है, यदि उपयोगकर्ता पहले ही प्रवेश कर रहा है, यह /student-home पर पुनः निर्देशित है तभी मार्ग /login और नहीं /my-portal है। यानी अगर मैं नियमित रूप से क्लिक करता हूं तो यह अतिरिक्त रूप मैंने नहीं बनाया है। यदि उपयोगकर्ता /my-portal पर क्लिक करता है तो मैं student-home पर रीडायरेक्ट कैसे कर सकता हूं?

उत्तर

4

आप के साथ अपने पोर्टल रूट करने के लिए एक नियंत्रक कनेक्ट कर सकते हैं: फिर नियंत्रक समारोह में, आप देख सकते हैं कि उपयोगकर्ता पहले से ही उम्मीद है कि

public function example() { 
    if(Auth::check()) { 
     //This condition will run if the user is logged in ! 
     return redirect('student-home'); 
    } 
    //Do whatever you want if user is not logged in! 
} 

द्वारा प्रवेश होने

Route::get('test', '[email protected]') ; 

, यह आपके प्रश्न का उत्तर देता है!

2

कृपया इस

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 

      if(guard == 'web_student') { 
       return redirect('student-home'); 
      }else return redirect('/home'); 
     } 
    return $next($request); 
} 

अपने कोड के साथ समस्या की तरह अपने RedirectIfAuthenticated मिडलवेयर बदल जाता है कि निम्नलिखित खंड हमेशा सच एक उपयोगकर्ता के प्रवेश करता है, तो होगा। आप या नहीं, एक विशिष्ट guard है के लिए जाँच करने के लिए है अगर आप उन्हें तदनुसार रीडायरेक्ट करना चाहते हैं, तो if कथन के अंदर सेट करें।

if (Auth::guard($guard)->check()) { return redirect('/home'); }

संबंधित मुद्दे