Laravel认证中间件没有重定向到登录页面



我在使用认证中间件时遇到了一些麻烦。我已经将中间件放到了一个路由组中,并且回滚了我的用户表。我希望应用程序将我重定向到我的登录/singup页面,但它没有这样做,它只是给了我"试图获得非对象的属性",指的是我的仪表板视图中的Auth::user()函数(我不应该访问)。

这是我的路由代码:

 Route::group(['prefix' => '/{username}/', 'middleware' => ['existing_user', 'auth']], function(){ 
     Route::get('/dashboard', function(){
         return view('dashboard');
     });
 });

这是我的观点:

<h1>{{ Auth::user()->username }}</h1>

另外,我不确定从数据库中删除用户是否意味着Laravel会自动删除用户会话。

谢谢你的帮助!

用户会话可以通过清除浏览器的缓存来删除您的域(例如localhost)。

Laravel使用Auth类来跟踪会话。由于会话同时在客户端服务器端上工作,因此必须从其中任何一个位置删除会话。删除在客户端是通过浏览器的cookie和删除在客户端可以通过文件,数据库或Redis等…因此,在这种情况下,从 users表中删除用户是没有意义的。从数据库中删除用户不会帮助Auth类知道不再有会话了。事实上,auth()->user()变成了null, auth()->check()仍然得到true

希望这能让你的概念清晰一点:)

最新更新