Auth::check 总是返回 null

我试图在用户登录时显示一个按钮。如果用户没有登录,则该按钮不会出现在页面上。所以我需要做的第一件事是确定用户是否登录。问题是,Auth::check() 一直返回 null。我已经研究过我们应该将路由放在 Auth 中间件中,但是这样做,用户必须登录才能看到页面,我不希望这样。我希望用户能够在没有登录的情况下看到该页面,并且当他们登录时,一个按钮将出现在同一页面上。


零件


 <button v-if="showBtnDelete==true" class="btn btn-danger">Delete</button>


 <script>

      getUserType(){

            axios.get('api/gallery/getUserType').then(res=>{

            this.showBtnDelete = res.data;});

        },

 </script>

控制器


public function getUserType()

{

    if(Auth::check()){

        return 'true';

    }else{

        return 'false';

    }

}

网页.php


Route::group(['middleware' => ['auth']],function(){

Route::get('/add-image', function () {return view('layouts.master');});

});


Auth::routes();


Route::get('/logout','Auth\LoginController@logout');


Route::get('/', function () {

return view('home');

});


Route::get('{path?}', function () {

return view('layouts.master');

})->where('path', '[\/\w\.-]*');


ITMISS
浏览 399回答 3
3回答

开满天机

保护 API 或网络Auth::guard('api')->check();Auth::guard('web')->check()

慕姐8265434

如果有人有同样的问题。问题是您的路由不受中间件组 web 的保护。这意味着它将无法检索当前用户的会话,因此 Auth 外观将始终返回 null。将 middleware('web') 添加到访问方法(代码)的路由中,如果已登录,您将能够检索当前用户。

千巷猫影

您将返回'true'并'false'作为字符串返回true,当非严格比较和false 严格比较时都返回echo 'false' == true; // trueecho 'false' === true; // false (not same data type)反之亦然...现在Auth::check() 自然返回一个布尔值,因此 if,else 语句是多余的...您可以在需要时使用辅助方法来使用每个守卫public function getUserType(){&nbsp; &nbsp;return auth()->check();}
打开App,查看更多内容
随时随地看视频慕课网APP