我試圖在用戶登錄時顯示一個按鈕。如果用戶沒有登錄,則該按鈕不會出現在頁面上。所以我需要做的第一件事是確定用戶是否登錄。問題是,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'; }}網頁.phpRoute::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\.-]*');
3 回答

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
如果有人有同樣的問題。問題是您的路由不受中間件組 web 的保護。這意味著它將無法檢索當前用戶的會話,因此 Auth 外觀將始終返回 null。將 middleware('web') 添加到訪問方法(代碼)的路由中,如果已登錄,您將能夠檢索當前用戶。

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
您將返回'true'并'false'作為字符串返回true,當非嚴格比較和false 嚴格比較時都返回
echo 'false' == true; // true
echo 'false' === true; // false (not same data type)
反之亦然...現在Auth::check() 自然返回一個布爾值,因此 if,else 語句是多余的...
您可以在需要時使用輔助方法來使用每個守衛
public function getUserType()
{
return auth()->check();
}
- 3 回答
- 0 關注
- 397 瀏覽
添加回答
舉報
0/150
提交
取消