【问题标题】:Package development - auth check doesn't work包开发 - 身份验证检查不起作用
【发布时间】:2017-01-04 22:58:19
【问题描述】:

为了开发一个包,我制作了一个简单的全新 Laravel 5.3 应用程序。我已按照here 的说明以及名为 Janis 的用户在 cmets 中进行了一些修改。一切都很完美。

然后我决定用

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

应用当前状态上传到 Github here

问题

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

提示

不知道怎么关注this hint

待办事项

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

【问题讨论】:

  • 如果您在加载该视图的包控制器中创建 dd(Auth::check()) 会发生什么?
  • 我只是在空白页上得到false
  • 您是说它在浏览器的另一个选项卡中运行良好 - 这怎么可能?你说的“这边”是什么意思?
  • 您是否尝试过检查您是否真的在登录?登录成功后尝试转储Auth::user()
  • 对我来说这看起来也是不可能的。尝试在本地计算机上启动应用程序以亲自查看。我已经编辑了On this side。这意味着从原始应用的角度来看,一切似乎都运行良好。

标签: php laravel authentication package laravel-5.3


【解决方案1】:

试试这个工匠命令

php artisan cache:clear

【讨论】:

  • 我在发布这个问题之前尝试过。我希望我会那么容易。 :)
【解决方案2】:

从 Laravel 5 开始,routes.php 中的任何路由都会自动使用 web 中间件,但你的包路由不会发生这种情况。

要在你的包控制器和视图中使用 Laravel 的身份验证,你需要在你的包 route.php 中强制使用 web 中间件:

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

【讨论】:

    【解决方案3】:

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

    您唯一需要做的就是为您的路线添加“网络”中间件

    $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';
        });
    

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2018-04-08
      • 2015-07-19
      • 2012-10-04
      • 2018-08-06
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多