当用户尝试访问该用户不允许的网址/product/{product_id}/edit
时,我已将重定向添加回以前的网址并带有消息,
public function edit($product_id)
{
...
return redirect()->back()->with(['error' => 'No permission']);
...
}
当用户点击链接(标记)时,它会重定向回错误的上一个网址。但是当用户尝试输入网址/product/12/edit
时,它会继续重定向到相同的网址并成为重定向循环。
如何妥善解决这个问题,是它和laravel bug吗?
答案 0 :(得分:4)
Laravel,如果找不到HTTP_REFERER,则将用户重定向到相同的URL。 为了避免无限循环,我使用了这种方法:
$referer = Request::header('referer');
if(empty($referer)) {
return Redirect::to(route('defaultRoute'));
} else {
return Redirect::back();
}
答案 1 :(得分:0)
如果用户点击链接,当前网址将作为'HTTP_REFERER'
传递,而laravel会将其用于重定向,但如果用户类型直接链接到浏览器地址栏,则不会有'HTTP_REFERER'
,因此会重定向循环
您可以使用route
重定向到
return redirect(route('product.index'))->with(['error' => 'No permission']);
因此用户将始终被重定向到索引页。
答案 2 :(得分:0)