Laravel 5.3:如何在服务提供商中使用Auth?

时间:2017-01-11 10:53:05

标签: laravel views laravel-5.3

我通过从表中获取值在共享视图中传递值。我需要知道用户ID,但Auth::check()返回false。我该怎么做?以下是代码:

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

2 个答案:

答案 0 :(得分:2)

确定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);
    }

答案 1 :(得分:0)

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

例如。在CategoriesController.php

...

  

class CategoryController扩展Controller {

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

...

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