Auth::check всегда возвращает ноль

Я пытаюсь сделать так, чтобы кнопка появлялась при входе пользователя в систему. Если пользователь не войдет в систему, кнопка не появится на странице. Итак, первое, что мне нужно, это определить, вошел ли пользователь в систему или нет. Проблема в том, что 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';
    }
}

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 источник
comment
Вы пробовали с Auth::guard('api')->check()? Просто замените api на охрану, которую вы хотите проверить (я использовал ее, потому что вы делаете вызов ajax из axios)   -  person mdexp    schedule 22.09.2019
comment
Попробуйте «dd()» перед возвратом и сообщите нам, что он говорит   -  person null    schedule 22.09.2019


Ответы (2)


охранять API или сеть


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


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

person dılo sürücü    schedule 22.09.2019
comment
он возвращает false оба из них. - 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, он возвращает false, даже если я вошел в систему - person HelloWorld1014; 22.09.2019
comment
Вы отправляете токен API с запросом axios? если вы вообще не используете токены, вы можете просто переместить этот маршрут с gallery/getUserType на web.php - person Salim Djerbouh; 22.09.2019