【问题标题】:Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of传递给 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的参数 1 必须是
【发布时间】:2020-05-27 05:13:08
【问题描述】:

传递给 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的参数 1 必须是 Illuminate\Contracts\Auth\Authenticatable 的实例,App\Models\User 的实例,在 D:\xampp\htdocs\backend\ 中调用e-commerce\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php 在第 384 行---- 我有这个问题请帮助我 我的模特页面


namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * 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',
    ];
}

我的控制器


namespace App\Http\Controllers;

use App\Mail\UserRegisterMail;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Mail;


class UserController extends Controller
{
    public function login(){
        return view('user.login');
    }

    public function register(){
        return view('user.register');
    }

    public function registerPost(Request $request){
        $request->validate([
            'ad' => 'required|max:60',
            'email' => 'required|email',
            'şifrə' => 'required|confirmed',
        ]);
        $request->flash();
        $user = User::create([
            'name' => $request->ad,
            'email' => $request->email,
            'password' => Hash::make($request->şifrə),
            'activation_code' => Str::random(60),
            'active' => 0
        ]);
        Mail::to($request->email)->send(new UserRegisterMail($user));
        // auth()->login($user,true);
        return redirect()->route('home');
    }

    public function activation($code){
        $user = User::where('activation_code',$code)->first();
        if(!is_null($user))
        {
            $user->activation_code = null;
            $user->active = 1;
            $user->save();
            return redirect()->to('/')->with('message','Qeydiyyatınız tamamlandı');
        }
    }

    public function loginPost(Request $request){
        $request->validate([
            'email'=>'required|email',
            'şifrə'=>'required'
        ]);
        if(Auth::attempt(['email'=>$request->email,'password'=>$request->şifrə],$request->has('xatirla')))
        {
            return redirect()->intended('/');
        }else{
            return redirect()->route('register');
        }
    }
}

【问题讨论】:

  • 您应该在模型上的 `protected $fillable = [ 'name', 'email', 'password', ];` 中添加 activation_codeactive 字段。我不确定,但这可能是解决方案。我希望工作。
  • 我尝试添加 $fillable 数组这个参数但没有改变结果
  • 你知道是哪个页面触发了这个错误吗?还是什么方法?
  • loginPost方法吗?
  • 是的,问题是 loginPost 方法

标签: php laravel


【解决方案1】:

将扩展模型更改为扩展 Authenticable。

在你的模型中

【讨论】:

  • 嘿,虽然我认为这可能会有所帮助,但它可能会使您的答案更好地解释为什么会有所帮助以及有什么区别。
猜你喜欢
  • 1970-01-01
  • 2020-07-02
  • 2013-10-03
  • 2020-05-15
  • 1970-01-01
  • 2021-12-22
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多