如何使用 Laravel 5 登录用户

Vla*_*mir 4 php laravel laravel-5

任何人都可以帮助我使用 Laravel 登录用户,这是我的尝试:

public function execute($hasCode){
    if(!$hasCode) return $this -> getAuthorizationFrist();  
    $user = $this->socialite->driver('facebook')->user();
    echo $user->getNickname();
    echo $user->getName();
    echo $user->getEmail();
    echo $user->getAvatar();


    $login = new Guard(); 
    $login ->loginUsingId(1);

}
Run Code Online (Sandbox Code Playgroud)

这是错误:

传递给 Illuminate\Auth\Guard::__construct() 的参数 1 必须是 Illuminate\Contracts\Auth\UserProvider 的一个实例,没有给出,在第 31 行的 /home/comment/public_html/bild/app/AuthenticateUser.php 和定义

luk*_*ter 6

您不能只是实例化,Guard因为它具有在创建时需要注入的依赖项。这是构造函数:

public function __construct(UserProvider $provider,
                            SessionInterface $session,
                            Request $request = null)
Run Code Online (Sandbox Code Playgroud)

您有几个选择:

1. 使用门面:

Auth::loginUsingId(1);
Run Code Online (Sandbox Code Playgroud)

2.使用IoC容器:

$auth = app('auth');
$auth->loginUsingId(1);
Run Code Online (Sandbox Code Playgroud)

3.使用依赖注入(推荐):

在您要使用的类的构造函数中:

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

在你的方法中:

$this->auth->loginUsingId(1);
Run Code Online (Sandbox Code Playgroud)

如果你得到

特性 'Illuminate\Auth\UserTrait'

对我来说,这听起来很像 Laravel 4(Laravel 5 不再具有此特性)您是否可能正在迁移您的应用程序?看看github上新的默认User模型