【问题标题】:Laravel 5.3: How to use Auth in Service Provider?Laravel 5.3:如何在服务提供者中使用身份验证?
【发布时间】:2017-01-11 10:53:05
【问题描述】:

我通过从表中获取值来传递共享视图中的值。为此,我需要知道用户 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);
    }

【问题讨论】:

  • 我认为你需要使用 Laravel 的Event Listenerlaravel.com/docs/5.3/events
  • 试试这样的use Illuminate\Support\Facades\Auth;public function boot($guard = null)$auth = Auth::guard($guard);$auth->guest() true or false$auth->user()
  • @Froxz guest 是真的
  • 你确定你已经登录了吗?
  • 我不在。

标签: laravel views laravel-5.3


【解决方案1】:

好吧,事实证明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);
    }

【讨论】:

    【解决方案2】:

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

    例如。在 CategoriesController.php 中

    ...

    类 CategoryController 扩展控制器 {

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

    ...

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

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 1970-01-01
      • 2017-02-08
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2017-05-13
      相关资源
      最近更新 更多