在laravel 6中成功注册后自动登录获得错误
在laravel 6中成功注册后,我在尝试自动登录时出错,并出现以下错误 传递给Illumb\Auth\SessionGuard::login()的参数1必须实现接口Illumb\Contracts\Auth\Authenticatable,给定null,在中调用 我的注册控制器是在laravel 6中成功注册后自动登录获得错误,laravel,Laravel,在laravel 6中成功注册后,我在尝试自动登录时出错,并出现以下错误 传递给Illumb\Auth\SessionGuard::login()的参数1必须实现接口Illumb\Contracts\Auth\Authenticatable,给定null,在中调用 我的注册控制器是 class RegisterController extends Controller { use RegistersUsers; protected $redirectTo = RouteServiceProv
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
// $this->middleware(['auth','verified']);
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'min:3'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
protected function create(array $data)
{
$username = slugify($data['name'])."-".mt_rand(10000, 99999);
$user = User::create([
'name' => $data['name'],
'username' => $username,
'email' => $data['email'],
'password' => Hash::make($data['password']),
'email_token' => base64_encode($data['email']),
]);
Auth::loginUsingId($user->id);
}
}
用户模型
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use App\Jobs\SendEmailJob;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email','name','password','username','picture',
'ip_address','email_verified_at','email_token','verified'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
function socialProviders(){
return $this->hasMany(socialProvider::class);
}
// This is the code define in the sendEmailVerificationNotification
public function sendEmailVerificationNotification()
{
SendEmailJob::dispatch($this);
}
}
您已经覆盖了注册逻辑,但是忽略了一个事实,即创建
方法需要返回一个App\User
的实例,或者至少是一个实现了可验证
的类
看一看,;您将看到docblock显示正在返回App\User
的实例,并且原始实现返回User::create()
调用的结果
要使自定义方法正常工作,请按如下方式进行更新:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'username' => slugify($data['name'])."-".mt_rand(10000, 99999);,
'email' => $data['email'],
'password' => Hash::make($data['password']),
'email_token' => base64_encode($data['email']),
]);
}
Laravel将负责用户的登录。您的用户模型是否实现了可验证的
界面?更新的用户模型请检查实现MustVerifyEmail
从用户模型中删除此项并重试。相同错误!!!!!