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
我通过从 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