0

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

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

if (!Auth::guest()) 

return view('posts'); 

else 

return "......"; 

В настоящее время здесь Auth :: гостевой() возвращает истину и вошли в систему и вышли из пользователей.

+0

У вашего маршрута применяется «промежуточное программное обеспечение»? – lagbox

+0

Да Route :: group (['middleware' => 'web'], function() {Route :: auth(); Route :: get ('/ home', 'homecontroller @ index); – rranj

ответ

0

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

пытаются сбросить свои данные Auth :: пользователя() с

dd(Auth::user());

И, кстати, если вы возвращаетесь в заявлении, если вам не нужно использовать другой.

+0

Да, хотя я я вошел в него, показывает null, когда я дам Auth :: user в моем postcontroller – rranj

+1

Ну, это должен быть Auth :: user(). Но вы сказали, что он возвращает null, а это значит, что вы не вошли в систему. –

+0

Но я записал в использовании предоставленной страницы входа, – rranj

0

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

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

0

Но Вы должны добавить эту строку кода для промежуточного слоя, чтобы знать, в PostController, что необходимо для проверки авторизован или users.Add это PostController:

public function __construct() 
{ 

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

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

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

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

php artisan route:list 

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

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