Auth :: guest () возвращает true как для вошедших, так и для вышедших из системы пользователей.

Я новичок в laravel, поэтому я пытался создать небольшой проект для обучения. Я использовал встроенный Auth для входа и регистрации. Эти автоматически сгенерированные страницы работают так хорошо, что теперь я создал маршрут к публикациям ресурсов с помощью контроллера под названием postcontroller.

Теперь в постконтроллере я проверяю, имеет ли пользователь право возвращать представление: отправляет еще на страницу входа. Чтобы проверить это, я делаю следующее

if (!Auth::guest())

return view('posts');

else

return "......";

Теперь Auth :: guest () возвращает true как для вошедших, так и для вышедших из системы пользователей.


person rranj    schedule 16.01.2016    source источник
comment
Применяется ли к вашему маршруту промежуточное ПО?   -  person lagbox    schedule 16.01.2016
comment
Да Route :: group (['middleware' = ›'web'], function () {Route :: auth (); Route :: get ('/ home's,' homecontroller @ index);   -  person rranj    schedule 16.01.2016


Ответы (4)


Вы уверены, что вошли в систему?

попробуйте сбросить данные Auth :: user () с помощью

dd(Auth::user());

И, кстати, если вы возвращаетесь в операторе if, вам не нужно использовать else.

person Rafael Ferreira    schedule 16.01.2016
comment
Да, даже если я вошел в систему, он показывает null, когда я сбрасываю Auth :: user в моем постконтроллере - person rranj; 16.01.2016
comment
Что ж, это должен быть Auth :: user (). Но вы сказали, что он возвращает null, что означает, что вы не вошли в систему. - person Rafael Ferreira; 16.01.2016
comment
Но я вошел в систему, используя предоставленную страницу входа, - person rranj; 16.01.2016

Вам необходимо убедиться, что вы используете промежуточное программное обеспечение «Интернет». По умолчанию домашняя страница не использует это, но маршрут / home использует, поэтому шаблоны лезвий работают в / home.

Добавьте промежуточное ПО «web» и dd (Auth :: user ()), и вы увидите лучшие результаты.

person Clayton.    schedule 20.03.2016

Но вы ДОЛЖНЫ добавить эту строку кода, чтобы промежуточное ПО узнало в постконтроллере, что ему нужно для проверки авторизованных пользователей. Добавьте это PostController:

public function __construct()
{

    $this->middleware('auth', ['except' => ['index', 'show']]);
}

После этого необходимо убедиться, что маршруты добавлены в список маршрутов. Это делается путем добавления данной строки в Routes / web.php

Route::resource('user','PostController');

перепроверьте, добавлен ли он, набрав следующую команду в терминале:

php artisan route:list

Как только маршрут добавлен, контроллеры знают, что они могут разговаривать друг с другом, все готово.

Примечание. За исключением означает, что пользователь может получить доступ ТОЛЬКО к индексу и отображать маршруты, если пользователь вошел в систему. Дополнительные сведения см. В документации laravel здесь. Надеюсь это поможет.

person Izac Mac    schedule 18.09.2017

вы можете использовать

если (! Auth :: user ())

// пользователь не авторизовался

еще

// пользователь вошел в систему

person asghar    schedule 19.03.2020
comment
Но я предполагаю, что вопрос касается Auth :: guest () - person Musa Haidari; 14.08.2020