Laravel AppServiceProvider Auth :: guard('admin')-> check()不起作用

时间:2019-05-14 15:33:25

标签: laravel

我想通过AppServiceProvider与所有视图共享数据。此外,我想先检查防护类型,以针对每种用户类型提供一些特定的输出。

我试图通过Auth :: guard('admin')-> check()检查AppServiceProvider中的防护,但返回false。但是,相同的if语句在我的控制器中也可以正常工作。 我还包含了Illuminate \ Support \ Facades \ Auth和Illuminate \ Support \ Facades \ View。

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{

    public function boot()
    {
        if (Auth::guard('admin')->check()) {

            // Share data with views

        }
    }
}

即使我以管理员身份登录,if语句也会返回false。

1 个答案:

答案 0 :(得分:0)

您需要为此使用View Composer。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Auth;
use DB;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('*', function ($view) 
        {
            if (Auth::guard('admin')->check()) {

            }   
        });  
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

如果要在视图中传递数据。

        view()->composer('*', function ($view) 
        {
            if (Auth::guard('admin')->check()) {
                 $admin = DB::table('admins')->first();  // for example
                 $view->with(compact('admin'));
            }   
        });