包开发 - 授权检查不起作用

Package development - auth check doesn't work

为了开发一个包,我做了一个简单的新鲜 Laravel 5.3 应用程序。我已按照 here 的说明进行操作,并在名为 Janis 的用户的评论中进行了一些修改。一切都很完美。

然后我决定用

升级已发布的视图
@if(Auth::check())
    ID: {{Auth::id()}}.
@else
    not logged in
@endif

应用程序的当前状态已上传到 Github here

问题

视图检查不起作用。我总是有 not logged in。 如何使 Auth::check() 工作? 在我浏览器的另一个选项卡中,我已正确登录。

一个提示

我不知道如何跟进

要做

请指导我如何使 Auth::check() 在视图中工作。

好吧,试试这个 artisan 命令

php artisan cache:clear

自 Laravel 5 以来,routes.php 中的任何路由都会自动使用 web 中间件,但这不会发生在您的包路由中。

要在您的包控制器和视图中使用 Laravel 的身份验证,您需要使用类似于以下内容的方式在您的包 route.php 中强制使用 Web 中间件:

Route::group(['middleware' => 'web'], function () {
  // your package routes here
});

这是我的包裹在我的服务提供商中的路线结构。

您唯一需要做的就是为您的路由添加 'web' 中间件

$routeConfig = [
        'namespace' => config('banasher.controllers.namespace')."\Panel",
        'prefix'    => 'panel',
        'as'        => 'panel.',
        //TODO: add middleware
        'middleware' => ['web','auth']
    ];
    $this->getRouter()->group($routeConfig, function() {
        require __DIR__.'\routes\banasher.php';
    });