我想这样做,如果用户未登录并且未找到该页面(未提供路由),则将用户重定向到登录页面显示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