我如何依赖在Laravel中注入Auth?
像这样:
public function __construct(Auth $auth)
{
$this->auth = $auth;
}
如果我这样做,那么这不起作用:
$user_type = Auth::user()->user_type;
答案 0 :(得分:8)
您应该输入提示Illuminate\Auth\AuthManager
:
public function __construct(Illuminate\Auth\AuthManager $auth)
{
$this->auth = $auth;
}
答案 1 :(得分:3)
如果你想注入Auth,你实际上需要注入这个类:
use Illuminate\Contracts\Auth\Guard;
这将解决您在内部定义的所有内容:
config/auth.php
如果您想扩展Auth,您可以这样做,但仅限于:
Guard Guard是Guard Class - 它需要实现Guard或StatefulGuard接口。
UserProvider类的提供者 - 它需要实现UserProvider接口。
Laravel / Lumen中的标准Auth Guard驱动程序是:
标准Auth UserProviders在Laravel / Lumen中:
有关在官方Laravel文档中扩展Auth的更多信息。请参阅以下链接:
https://laravel.com/docs/5.0/extending#authentication
这是我在我的控制器中的代码,它就像一个魅力:
public function createToken(Request $request, Guard $guard)
{
// return 'in progress...';
}
扩展Auth类的最佳实践是ServiceProvider boot()方法。
希望这有帮助!
干杯。