Auth::periksa selalu kembalikan nol

Saya mencoba membuat tombol muncul ketika pengguna masuk. Jika pengguna tidak masuk, tombol tersebut tidak akan muncul di halaman. Jadi hal pertama yang saya perlukan adalah menentukan apakah pengguna sudah login atau belum. Masalahnya adalah, Auth::check() terus mengembalikan nol. Saya telah melakukan penelitian bahwa kita harus meletakkan rute di dalam middleware Auth, tetapi untuk melakukan itu, pengguna harus masuk untuk melihat halaman tersebut dan saya tidak menginginkannya. Saya ingin pengguna dapat melihat halaman tanpa login dan ketika mereka login, sebuah tombol akan muncul di halaman yang sama.

Komponen

 <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>

Pengontrol

public function getUserType()
{
    if(Auth::check()){
        return 'true';
    }else{
        return 'false';
    }
}

Web.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\.-]*');

person HelloWorld1014    schedule 22.09.2019    source sumber
comment
Sudahkah Anda mencoba dengan Auth::guard('api')->check()? Ganti saja api dengan penjaga yang ingin Anda periksa (Saya menggunakan yang itu karena Anda melakukan panggilan ajax dari axios)   -  person mdexp    schedule 22.09.2019
comment
Coba “dd()” sebelum pengembalian dan beri tahu kami isinya   -  person null    schedule 22.09.2019


Jawaban (2)


menjaga API atau web


Auth::guard('api')->check();


Auth::guard('web')->check()

person dılo sürücü    schedule 22.09.2019
comment
itu mengembalikan false keduanya. - person HelloWorld1014; 22.09.2019

Anda mengembalikan 'true' dan 'false' sebagai string yang keduanya mengembalikan true jika tidak dibandingkan secara ketat dan false bila dibandingkan secara ketat

echo 'false' == true; // true
echo 'false' === true; // false (not same data type)

Dan sebaliknya... Sekarang Auth::check() secara alami mengembalikan boolean sehingga pernyataan if, else menjadi mubazir secara keseluruhan...
Anda dapat menggunakan metode pembantu untuk menggunakan setiap penjaga bila diperlukan

public function getUserType()
{
   return auth()->check();
}
person Salim Djerbouh    schedule 22.09.2019
comment
saya melakukan hal di atas dan memeriksa dd, hasilnya salah meskipun saya masuk - person HelloWorld1014; 22.09.2019
comment
Apakah Anda mengirimkan token API dengan permintaan aksio Anda? jika Anda tidak menggunakan token sama sekali, Anda cukup memindahkan rute itu gallery/getUserType ke web.php - person Salim Djerbouh; 22.09.2019