Laravel:依赖注入Auth

Rob*_*tin 6 authentication dependency-injection laravel laravel-4

我如何依赖在Laravel中注入Auth?

像这样:

 public function __construct(Auth $auth)
    {
      $this->auth = $auth;

    }
Run Code Online (Sandbox Code Playgroud)

如果我这样做,那么这不起作用:

$user_type = Auth::user()->user_type;
Run Code Online (Sandbox Code Playgroud)

Bog*_*dan 9

你应该输入提示Illuminate\Auth\AuthManager:

public function __construct(Illuminate\Auth\AuthManager $auth)
{
  $this->auth = $auth;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果要注入Auth,实际上需要注入这个类:

use Illuminate\Contracts\Auth\Guard;
Run Code Online (Sandbox Code Playgroud)

这将解决您在内部定义的所有内容:

config/auth.php
Run Code Online (Sandbox Code Playgroud)

如果您想扩展 Auth 您可以这样做,但仅限于:

  1. Guard Driver 是 Guard Class - 它需要实现 Guard 或 StatefulGuard 接口。

  2. Provider 是 UserProvider 类 - 它需要实现 UserProvider 接口。

Laravel / Lumen 中的标准 Auth Guard 驱动程序是:

  1. 会话卫士
  2. 令牌卫士

Laravel / Lumen 中的标准 Auth UserProviders 是:

  1. EloquentUserProvider
  2. 数据库用户提供者

更多关于在 Laravel 官方文档中扩展 Auth 的信息。请参阅以下链接:

https://laravel.com/docs/5.0/extending#authentication

这是我在我的控制器中的代码,它就像一个魅力:

    public function createToken(Request $request, Guard $guard)
    {
//        return 'in progress...';
    }
Run Code Online (Sandbox Code Playgroud)

扩展 Auth 类的最佳实践是在 ServiceProvider boot() 方法中。

希望这可以帮助!

干杯。