我想這樣做,如果用戶未登錄並且未找到該頁面(未提供路由),則將用戶重定向到登錄頁面顯示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. 用戶註冊後重定向到登錄頁面。 Laravel 5.4
- 2. 頁面重定向到登錄頁
- 3. WordPress的登錄頁面重定向到「找不到網頁」
- 4. 在laravel重置密碼後重定向到登錄頁面
- 5. 登錄重定向到指定頁面
- 6. 重定向到IFrame的登錄頁面
- 7. WordPress重定向到未找到頁面
- 8. PHP cURL重定向到登錄頁面
- 9. 不要重定向到登錄頁面
- 10. jquery重定向到登錄頁面
- 11. 重定向到登錄頁面/彩盒
- 12. 重定向到登錄頁面策略
- 13. FormsAuthentication重定向到登錄頁面
- 14. 自動重定向到登錄頁面
- 15. 重定向到登錄頁面
- 16. LightOpenId不重定向到登錄頁面
- 17. 重定向到https登錄頁面
- 18. 重定向到登錄頁面
- 19. asp.net重定向到登錄頁面
- 20. 重定向到登錄頁面 - Codeigniter
- 21. 當用戶未登錄時重定向到登錄頁面(asp)
- 22. TYPO3 - 用戶未登錄時重定向到登錄頁面
- 23. 檢索重定向到python中的登錄頁面的頁面
- 24. 如何使用Laravel 5.4註銷並重定向到登錄頁面?
- 25. 的.htaccess重定向頁面未找到特定頁面
- 26. 將登錄頁面重定向到登錄頁面(如果沒有登錄)(tanyacms)
- 27. 登錄頁面重定向
- 28. 如果未登錄,重定向頁面
- 29. PHP htaccess重定向頁面未找到
- 30. .htaccess重定向404頁面未找到
問題是,即使您已經登錄,\ Auth :: guest()也會返回true。 – vivanov
使用'\ Auth :: check()'而不是使用'\ Auth :: guest()'。這可能有幫助。 – Manish
@vivanov所以問題在於沒有找到路由時啓用會話,所以你沒有那裏的用戶數據。查看我上面的編輯,瞭解如何啓用所有路由的會話。 – TheFallen