2015-08-17 132 views
0

當用戶試圖訪問URL /product/{product_id}/edit,這是不允許的用戶,我添加了一個重定向返回到之前的URL與和消息,Laravel重定向回導致重定向循環

public function edit($product_id) 
{ 
... 
return redirect()->back()->with(['error' => 'No permission']); 
... 
} 

當用戶點擊在鏈接(標記)上,它會重定向回到以前的網址,並顯示錯誤。但是,當用戶嘗試輸入URL /product/12/edit時,它會保持重定向到相同的URL併成爲重定向循環。

如何正確解決這個問題,它和laravel的bug?

回答

0

如果用戶點擊當前的URL作爲'HTTP_REFERER'通過一個鏈接,並laravel用它來重定向回,但如果用戶類型直接鏈接到瀏覽器地址欄中不會有'HTTP_REFERER',因此重定向循環。

您可以使用route重定向到

return redirect(route('product.index'))->with(['error' => 'No permission']); 

所以用戶總是會重定向到索引頁。

+0

有沒有辦法讓以前的請求不是ajax的Laravel? –

+0

@JithinJose不太明白你的問題:-) –

+0

我想從該用戶重定向回以前的請求url,排除任何ajax請求。 –

0

重定向迴應該如下:

return redirect()->back()->with('error', 'No permission'); 

裁判:larave doc

+0

如果我們加載沒有HTTP_REFERER頭的頁面,它將無法工作,它將重定向到同一頁面並最終變成重定向循環。 –

4

Laravel,如果HTTP_REFERER沒有找到,用戶重定向到相同的URL。 爲了避免無限循環,我使用了這種方法:

$referer = Request::header('referer'); 
if(empty($referer)) { 
    return Redirect::to(route('defaultRoute')); 
} else { 
    return Redirect::back(); 
}