Auth::check จะคืนค่า null เสมอ

ฉันกำลังพยายามทำให้ปุ่มปรากฏขึ้นเมื่อผู้ใช้เข้าสู่ระบบ หากผู้ใช้ไม่ได้เข้าสู่ระบบ ปุ่มนั้นจะไม่ปรากฏบนหน้า สิ่งแรกที่ฉันต้องการคือตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่ ปัญหาคือ Auth::check() ส่งคืนค่าว่าง ฉันได้ค้นคว้าแล้วว่าเราควรใส่เส้นทางไว้ในมิดเดิลแวร์ 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\.-]*');

person HelloWorld1014    schedule 22.09.2019    source แหล่งที่มา
comment
คุณได้ลองกับ Auth::guard('api')->check() แล้วหรือยัง? เพียงแทนที่ api ด้วยตัวป้องกันที่คุณต้องการตรวจสอบ (ฉันใช้อันนั้นเพราะคุณกำลังโทร ajax จาก axios)   -  person mdexp    schedule 22.09.2019
comment
ลองใช้ “dd()” ก่อนการส่งคืนและแจ้งให้เราทราบว่าข้อความนั้นเขียนว่าอย่างไร   -  person null    schedule 22.09.2019


คำตอบ (2)


Guard API หรือเว็บ


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


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

person dılo sürücü    schedule 22.09.2019
comment
มันคืนค่าเท็จทั้งคู่ - person HelloWorld1014; 22.09.2019

คุณกำลังคืนค่า '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();
}
person Salim Djerbouh    schedule 22.09.2019
comment
ฉันทำข้างต้นแล้วตรวจสอบ dd มันจะคืนค่าเท็จแม้ว่าฉันจะเข้าสู่ระบบก็ตาม - person HelloWorld1014; 22.09.2019
comment
คุณกำลังส่งโทเค็น API พร้อมกับคำขอ axios ของคุณหรือไม่? หากคุณไม่ได้ใช้โทเค็นเลย คุณสามารถย้ายเส้นทางนั้น gallery/getUserType ไปที่ web.php - person Salim Djerbouh; 22.09.2019