Say for 404异常处理我试图根据用户会话分别为admin和front页面显示404页面,以下是我的Handler.php文件的渲染功能
public function render($request, Exception $e)
{
echo Session::has('user.id');
...
...
}
但Session::has('user.id')
总是返回null值,我无法确定用户是否实际登录。
在我的一个旧Laravel项目中,我使用了相同的逻辑并且成功运行,当前项目Laravel版本为5.2.45
感谢您的帮助。
答案 0 :(得分:0)
我建议使用auth()
- 帮助器或Auth
- Facade来检索有关当前登录用户的信息,并检查用户是否已登录。
auth()->id();
Auth::id();
auth()->check();
Auth::check();
https://laravel.com/docs/5.5/authentication#retrieving-the-authenticated-user
答案 1 :(得分:0)
您将遇到的问题是StartSession
中间件尚未运行的404错误,因此从技术上讲,抛出异常时用户信息尚不可用。
一种解决方案可能是专门检查端点,例如包含管理员关键字/admin/doesnotexist
的内容,但它是否有限,就像您尝试/testing
意图不明确一样,用户是否请求前端或后端资源?
另一种选择是:
public function render($request, Exception $exception)
{
if ($exception instanceof NotFoundHttpException) {
return redirect('/displaynotfound');
}
return parent::render($request, $exception);
}
Route::get('/displaynotfound', function() {
// Do what you need todo, as you will have access to
// to the user.
dd(auth()->user());
});