我想這樣做,如果用戶未登錄並且未找到該頁面(未提供路由),則將用戶重定向到登錄頁面顯示404頁面。如果用戶登錄,則應該顯示404頁面。我正在使用Laravel 5.4。重定向到「未找到頁面」上的登錄頁面 - Laravel 5.4
1
A
回答
1
可以在應用程序\例外聽任何異常\處理器@渲染:
if ($e instanceof NotFoundHttpException) {
if (\Auth::guest()) {
return redirect()->to('/login');
}
return response()->view('errors.404', [], 404);
}
不要忘記在use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
你的文件的頂部。
編輯
您必須啓用會議的所有路由,所以你可以有找不到路由的用戶數據。在您的應用程序/ HTTP/Kernel.php添加下列項目的$middleware
陣列:
protected $middleware = [
....
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
];
1
使用此在您的例外/ Handler.php
public function render($request, Exception $e)
{
if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException){
return response(redirect(url('/')), 404);
}
return parent::render($request, $e);
}
+0
我upvoted你的答案,因爲它幾乎是正確的,但是重定向狀態代碼不應該是404,但可能是一個30倍 –
+0
感謝您的回答。它幾乎在那裏,但實際上當您登錄時,它會重定向到主頁,而不是找到找不到的頁面。感謝你的努力! – vivanov
相關問題
- 1. WordPress的登錄頁面重定向到「找不到網頁」
- 2. 在laravel重置密碼後重定向到登錄頁面
- 3. 重定向到IFrame的登錄頁面
- 4. WordPress重定向到未找到頁面
- 5. LightOpenId不重定向到登錄頁面
- 6. 重定向到https登錄頁面
- 7. 重定向到登錄頁面/彩盒
- 8. asp.net重定向到登錄頁面
- 9. 重定向到登錄頁面
- 10. 重定向到登錄頁面策略
- 11. 如何使用Laravel 5.4註銷並重定向到登錄頁面?
- 12. 登錄頁面重定向
- 13. 如果未登錄,重定向頁面
- 14. .htaccess重定向404頁面未找到
- 15. 重定向HTTP到HTTPS,不重定向到登錄頁面
- 16. Laravel登錄後重定向到之前的動態頁面
- 17. 返回重定向到laravel的登錄頁面5.3
- 18. 我想重定向登錄頁面,如果未在Laravel 5.4中驗證
- 19. 管理頁面,它重定向到登錄頁面
- 20. 如何在頁面刷新後重定向到登錄頁面
- 21. 登錄頁面重定向到主索引頁面
- 22. 登錄頁面將不能重定向到安全頁面
- 23. 重定向到登錄頁面,如果沒有登錄到facebook
- 24. Laravel:登錄後將用戶重定向到同一頁面
- 25. 登錄或註冊後重定向到基本頁面Laravel
- 26. 成功登錄後Laravel重定向到其他頁面
- 27. Laravel 5.2:將用戶重定向到登錄頁面失敗後
- 28. 如何在Laravel 5登錄到該頁面後登錄到上一頁後重定向回到頂端
- 29. 網站未重定向到指定頁面登錄
- 30. Xamarin Forms - 未找到Azure登錄頁面?
問題是,即使您已經登錄,\ Auth :: guest()也會返回true。 – vivanov
使用'\ Auth :: check()'而不是使用'\ Auth :: guest()'。這可能有幫助。 – Manish
@vivanov所以問題在於沒有找到路由時啓用會話,所以你沒有那裏的用戶數據。查看我上面的編輯,瞭解如何啓用所有路由的會話。 – TheFallen