【问题标题】:How to fix error in user verification plugin on new user creation?如何在创建新用户时修复用户验证插件中的错误?
【发布时间】:2019-02-21 13:35:10
【问题描述】:

在我的 laravel 5.7.3 应用程序中,我有用于创建用户的向导。 它有效,但是在创建用户时出现错误我附加了插件https://github.com/jrean/laravel-user-verification/

我的模型app/User.php:

<?php

namespace App;

use DB;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Http\Traits\funcsTrait;
use App\library\ImagePreviewSize;


//class User extends Authenticatable
class User extends Authenticatable
{
    use Notifiable;
    use funcsTrait;
    protected $table = 'users';
    protected $primaryKey = 'id';
    public $timestamps = false;
...

并在控件app/Http/Controllers/AccountController.php:

public function postConfirm() // create new user with all related data
{
    DB::beginTransaction();
    try {
        $newAccountData = Session::get($this->register_session_key);

        $avatar_filename = ! empty($newAccountData['avatar_filename']) ? $newAccountData['avatar_filename'] : '';
        $avatar_filename_path = ! empty($newAccountData['avatar_filename_path']) ? $newAccountData['avatar_filename_path'] : '';

        $newUser             = new User();
        $newUser->username   = $newAccountData['username'];
        $newUser->email      = $newAccountData['email'];
        $newUser->password   = $newAccountData['password'];
        $newUser->first_name = $newAccountData['first_name'];
        $newUser->last_name  = $newAccountData['last_name'];
        $newUser->phone      = $newAccountData['phone'];
        $newUser->website    = $newAccountData['website'];
        $newUser->status     = 'N';
        if ( ! empty($avatar_filename)) {
            $newUser->avatar = $newAccountData['avatar_filename'];
        }
        $newUser->save();


        $ret1= UserVerification::generate($newUser);

在最后一行我得到了错误:

The model instance provided is not compliant with this package.   

在上面链接的文档中,我读到: 提供的模型实例不符合此包。它必须实现可验证接口 Illuminate\Contracts\Auth\Authenticatable

我试图用行修改我的用户模型:

<?php

namespace App;

use DB;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\Authenticatable;
use App\Http\Traits\funcsTrait;
use App\library\ImagePreviewSize;


class User extends Authenticatable
{
    ...

但我得到了错误:

Class App\User cannot extend from interface Illuminate\Contracts\Auth\Authenticatable

为什么会出错以及如何解决?

谢谢!

【问题讨论】:

    标签: authentication laravel-5


    【解决方案1】:

    您的 User 模型必须使用 laravel 扩展 Illuminate\Foundation\Auth\User,默认别名为 Authenticatable

    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
    
    }
    

    在您的代码中,您扩展了 Authenticatable 合同,它是一个 PHP 接口,而不是一个 PHP 类

    【讨论】:

    • 请看一下我的代码开头:我做了,得到了错误:“提供的模型实例不符合这个包。” - 我试图通过文档 limk 修复它。
    猜你喜欢
    • 2022-08-05
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2019-10-28
    • 1970-01-01
    • 2023-04-06
    • 2023-04-02
    相关资源
    最近更新 更多