Я работаю над laravel 5.5. Я проверяю, вошел ли пользователь в систему следующим образом:
@if (Auth::check())
//some logic
@else
//somelogic
@endif
Но оператор if/else выполняется дважды в зависимости от того, вошел ли пользователь в систему или нет. Как вы думаете, почему это происходит? Я пробовал другие способы проверки аутентификации, как уже упоминалось здесь. Тем не менее я получаю ту же ошибку.
Макет, который я использую.
<!DOCTYPE html>
<html lang = "{{ app()->getLocale() }}">
<head>
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE=edge">
<meta name = "viewport" content = "width=device-width, initial-
scale=1">
<title>{{ config('app.name', '') }}</title>
<!-- Styles -->
<link href = "{{ asset('css/app.css') }}" rel = "stylesheet">
</head>
<body>
<div id = "app">
@include('inc.navbar')
<div class = "container">
@yield('content')
</div>
</div>
<!-- Scripts -->
<script src = "{{ asset('js/app.js') }}"></script>
</body>
</html>
Логика для реализации
@if (Auth::user())
@extends('layouts.app')
@section('content')
<h1> Exercises</h1>
@endsection
@else
@extends('layouts.app')
@section('content')
<h1> Nope</h1>
@endsection
@endif
Ожидаемый результат: разные панели навигации для гостя и вошедшего в систему пользователя. Текущий выход ; Навигационная панель вошедшего в систему пользователя появляется дважды, если пользователь вошел в систему. В противном случае гостевая пользовательская панель навигации появляется дважды, когда пользователь выходит из системы.
Описанное вами поведение указывает на то, что у вас возникла проблема, не зависящая от проверки подлинности, поскольку вы описываете один и тот же контент, который появляется дважды. Вам нужно поделиться кодом макета, который вы используете, у вас, вероятно, есть ошибка.
Так что часть аутентификации работает нормально. На какую страницу вы включаете этот файл шаблона блейда и как? Проверяйте на повторы.
Я отредактирую вопрос с кодом.






Вы можете попробовать это
@if (Auth::user())
// User is logged
@else
//User is not logged
@endif
Я надеюсь, что это будет полезно
В Laravel 5.5 вы можете использовать что-то подобное
@auth
// logged in
@else
// not logged in
@endif
Кроме того, вы можете проверить гостевого пользователя
@guest
// guest user
@endguest
Для получения дополнительной информации прочитайте Директивы аутентификации
Измените свою страницу так. @extends не следует вызывать дважды.
@extends('layouts.app')
@section('content')
@if (Auth::user())
<h1> Exercises</h1>
@else
<h1> Nope</h1>
@endif
@endsection
Вы также можете использовать тернарный оператор, если вам нужны разные макеты для extend :
@extends(Auth::check() ? 'layouts.app' : 'layouts.app2')
Используйте тернарный оператор для проверки и изменения макета. Вы не должны и в большинстве случаев не можете использовать @extends дважды без дублирования. Обновил ответ с необходимым кодом для этого.
Можете ли вы поделиться, в чем именно проблема? Этот код сам по себе кажется прекрасным. Что такое
//some loginи какой результат вы получаете и что ожидается.