簡體   English   中英

Laravel 5.5登錄后將用戶重定向到主頁時出現302重定向錯誤

[英]Laravel 5.5 Getting 302 redirect error when redirecting user to homepage after login

我搜索了很多論壇,但在這里沒有發現我的錯誤。 我在laravel中不是很好,所以我確定我犯了一個錯誤,這對於更高級的開發人員來說是顯而易見的。 我的頁面是這樣的。 當新用戶首次進入該網站時,將無需登錄,並且用戶可以查看主頁。 然后,用戶注冊,並將被重定向到帶有主頁鏈接的電子郵件驗證頁面,但用戶不會自動登錄。 用戶確認電子郵件后,她可以登錄。登錄后,如果用戶是普通用戶,我希望將用戶重定向到主頁,如果用戶是Admin,則希望將用戶重定向到儀表板。 問題來了。 登錄后,我收到302重定向錯誤。 在下面,您可以看到我的路線和我編輯的其他控制器。 希望我能夠解釋這個問題。 感謝您的任何幫助。

我的web.php文件

Route::get('/', ['middleware'=>'web','uses'=>'HomeController@index']);
Route::get('/home', ['middleware'=>'auth','uses'=>'HomeController@after_login']);
Route::get('/search',['middleware'=>'web','uses'=>'HomeController@search']);
Route::get('/search-all-category',['middleware'=>'web','uses'=>'HomeController@search_all_category']);
Route::get('/register/register-search-cities',['middleware'=>'web','uses'=>'HomeController@register_search_cities']);
Route::post('/company-results',['middleware'=>'web','uses'=>'HomeController@search_companies']);
Route::get('/validate-email',function(){
    return view('validate-email');
});
Route::get('/all', ['middleware'=>'guest','uses'=>'HomeController@index']);
Auth::routes();

我的LoginController.php控制器,在這里我已經從AuthenticatesUsers.php覆蓋了authenticated函數:

//   protected $redirectTo = '/home';


protected function authenticated( Request $request, $user ) {
        if($user->isAdmin == '0'){

            return redirect()->intended('/home');
        }else if($user->isAdmin == '1'){
            return redirect()->intended('dashboard.dashhome');
        }else{

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

這是我的HomeController.php ,它處理routes

public function index() {
    $country = Country::all();
    return view('/home',compact('country'));
}

public function after_login(){
    $country = Country::all();
    return view('/home',compact('country'));
}

您的密碼

 if($user->isAdmin == '0'){

            return redirect()->intended('/home');
        }else if($user->isAdmin == '1'){
            return redirect()->intended('dashboard.dashhome');
        }else{

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

可以這樣簡化(在您發表評論后,將非管理員重定向到/因為否則它們將陷入循環中

 if ($user->isAdmin){
     return redirect()->intended('dashboard.dashhome');
 } else {
     return redirect()->intended('/'); // return to a route not behind auth middleware to avoid loop
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM