Laravel 5 - Auth中间件和路由

时间:2016-01-19 20:18:46

标签: laravel authentication routes middleware

我对Laravel相当新,我的路线,导航和身份验证存在问题。

我正在建立一个基于订阅的系统,其中某些设施可用于登录成员,以及一些可用于登录和未登录用户的功能。

我的水平导航栏中有一些菜单项应始终显示,有些菜单项只应在用户登录时显示。

我通过在Middleware块中声明一些路由来实现这一点,如下所示:

//Directory (visible whether logged in or not)
Route::get('directory', 'DirectoryController@index');
Route::get('directory/band/{id}', 'DirectoryController@band');

还有一些,不属于这个......

Route::group(['middleware' => 'web'], function () {
    Route::auth();

    //Events
    Route::get('events', 'EventsController@index');
    Route::get('eventsByRange/{start}/{$end}', 'EventsController@eventsByRange');
}

Nav菜单有一些检查以查看是否有登录用户,并显示额外的菜单项(如果有),如下所示(我现在登录!)

    <li><a href="/directory">Directory</a></li>
    @if (Auth::guest())
        <li><a href="/features">Features</a></li>
        <li><a href="/plans">Plans</a></li>
        <li><a href="{{ url('login') }}">Login</a></li>
        <li><a href="{{ url('/register') }}">Register</a></li>
    @else
        <li><a href="/events">Events</a></li>
    @endif

问题是,当我导航到中间件块之外的路由时,例如&#39; / directory&#39;,导航栏似乎失去了登录状态,以及所有额外的菜单项(&#39; / events&#39;例如)消失。如果我然后导航回受Auth中间件保护的页面,则所有选项都会重新出现。

我无法理解为什么会发生这种情况以及如何解决这个问题。

换句话说,目录控制器似乎失去了我是否登录的所有跟踪,然后菜单项没有显示。

任何想法都会受到高度赞赏 - 我想我的做法不正确。

此致

詹姆斯

0 个答案:

没有答案