无法在Laravel的同一页面中检查身份验证

时间:2019-05-20 06:13:21

标签: laravel laravel-5.7

这是我的第一个laravel项目。我正在用登录用户创建一个网站。我的问题是当我输入我的网址然后打开总是主页时。如果用户登录了,那么它将在导航栏中显示名称,对于来宾总是显示为来宾。我不想更改网址对于这两种情况...。即使访客登录后也进入相同的URL,但是该用户显示为auth用户。请帮我怎么做。我从电子商务网站了解概念。

Route::group(['middleware' => 'web'], function () {
    Route::get('/', 'WebController@loadPage');
    Route::get('/signin', 'WebController@login');
});

这是我的路线。我已经使用@auth和@guest更改了navbar。但是如何首先检查用户r auth是否不更改url。

2 个答案:

答案 0 :(得分:0)

您可以将中间件用于经过身份验证的路由。 如果您使用laravel的默认auth,则只需为经过身份验证的路由设置路由中间件,如下所示

Route::group(['middleware' => 'auth'],function (){
 //Your Protected routes goes here
});

或者如果您想在登录后将用户重定向到某些自定义路由,则可以在LoginCOntroller内的Controller/Auth中进行编辑,并设置变量protected $redirectTo = '/YourRedirectionPath';

我建议您阅读Authentication documentation有据可查的文档

答案 1 :(得分:0)

如果您在应用程序中使用引导程序,则可以将导航栏编辑为类似于以下内容:

<nav class="navbar navbar-expand-md navbar-light navbar-default">
    <div class="container">
        <a class="navbar-brand" href="{{ url('/') }}">
            {{ config('app.name') }}
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <!-- Left Side Of Navbar -->
            <ul class="navbar-nav mr-auto">

            </ul>

            <!-- Right Side Of Navbar -->
            <ul class="navbar-nav ml-auto">
                <!-- Authentication Links -->
                @guest
                    <li class="nav-item">
                        <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                    </li>
                    @if (Route::has('register'))
                        <li class="nav-item">
                            <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                        </li>
                    @endif
                @else
                    <li class="nav-item dropdown">
                        <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                            {{ Auth::user()->name }} <span class="caret"></span>
                        </a>

                        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                            <a class="dropdown-item" href="{{ route('logout') }}"
                               onclick="event.preventDefault();
                                             document.getElementById('logout-form').submit();">
                                {{ __('Logout') }}
                            </a>

                            <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                @csrf
                            </form>
                        </div>
                    </li>
                @endguest
            </ul>
        </div>
    </div>
</nav>

工作原理:

@guest
// Logged as guest - shows login/register buttons.
@else
// Logged as auth user - shows username and logout button in dropdown menu.
@endguest