Laravel 5.3: 如何在Service Provider中使用Auth?

Laravel 5.3: How to use Auth in Service Provider?

我通过从 table 获取值来在共享视图中传递一个值。为此,我需要知道用户 ID,但 Auth::check() returns 错误。我该怎么做?下面是代码:

public function boot()
    {
        $basket_count = 0;
        if (Auth::check()) { //always false
            $loggedin_user_id = Auth::user()->id;
            $basket_count = Cart::getBasketCount();
        }
        view()->share('basket_count', $basket_count);
    }

OK 事实证明 ServiceProviders 不适合这样的事情。最好的是Middleware。所以如果你想调用 Auth,创建中间件并将值传递给视图。

public function handle($request, Closure $next)
    {            
        $basket_count = 0;
        if ($this->auth) { //always false
            $loggedin_user_id = $this->auth->user()->id;
            $basket_count = Cart::getBasketCount($loggedin_user_id);
        }
        view()->share('basket_count', $basket_count);

        return $next($request);
    }

您可以直接在控制器文件中使用身份验证。将它添加到中间件中是一种更简洁的身份验证方式。

例如。在 CategoriesController.php

...

class CategoryController extends Controller {

/**
 * CategoryController constructor.
 */
public function __construct()
{
    $this->middleware('auth');
}

...

如果你想看一个完整的例子 http://deepdivetuts.com/basic-create-edit-update-delete-functionality-laravel-5-3