当前位置: 首页 > 知识库问答 >
问题:

Laravel 8-照亮\Auth\EloquentUserProvider::validateCreentals()

程墨竹
2023-03-14

我有一个应用程序,我想进行身份验证,但不使用用户模型。该模型称为Karyawan。但是当我更改auth.php时,它开始显示此错误:

照明\Auth\EloquentUserProvider::validateCreentals():参数#1($user)必须是类型照明\合同\认证\身份验证,应用程序\模型\Karyawan给定,调用C:\KKP\Project_KKP\供应商\laravel\框架\src\照明\Auth\SessionGuard.php在第426行

Laravel版本为8

认证。php

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\Karyawan::class,
    ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
        'throttle' => 60,
    ],
],

应用程序\模型\ Karyawan。php

namespace App\Models;

use App\Models\Cuti;
use App\Models\Role;
use App\Models\Divisi;
use App\Models\Jabatan;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Karyawan extends Model
{
    use HasFactory;

    protected $guarded = ['karyawan_id'];
    protected $table = 'karyawans';

    public function scopeSearch($query, array $searchs) {

        $query->when($searchs['search'] ?? false, function($query, $search) {
            return $query->where('nama', 'like', '%' . $search . '%')
            ->orWhere('divisi', 'like', '%' . $search . '%') 
            ->orWhere('jabatan', 'like', '%' . $search . '%')
            ->orWhere('agama', 'like', '%' . $search . '%')
            ->orWhere('nik', 'like', '%' . $search . '%'); 
        });
    }

    public function role_id()
    {
        return $this->belongsTo(Role::class);
    }

    public function divisi()
    {
        return $this->belongsTo(Divisi::class);
    }

    public function jabatan()
    {
        return $this->belongsTo(Jabatan::class);
    }

    public function cuti()
    {
        return $this->hasMany(Cuti::class);
    }
}

web.php

Route::get('/', [BasicLoginController::class, 'login']);
Route::post('/', [BasicLoginController::class, 'authenticate']);

BasicLoginController。php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class BasicLoginController extends Controller
{

public function login()
{
    return view ('login.login', [
        'title' => 'Login'
    ]);
}

public function authenticate(Request $request) {
    $credentials = $request->validate([
        'email' => 'required|email:dns',
        'password' => 'required'
    ]);

    if(Auth::attempt($credentials)) {
        $request->session()->regenerate();
        return redirect()->intended('/dashboard');
    }

    return back()->with('loginError', 'Email atau Password salah');
}
}

共有2个答案

楚硕
2023-03-14

类Karyawan需要实现接口。或者,您可以在Karyawan类中扩展Illumbite\Foundation\Auth\User。

金谭三
2023-03-14

正如错误所说,您的类需要实现接口,公共用户模型通过将类扩展为可验证的,从而实现接口

因此,要么在类中实现契约,要么在其中声明所有需要的方法功能。

只需扩展现有的Illumate\Foundation\Auth\User

namespace App\Models;

//...
use Illuminate\Foundation\Auth\User as Authenticatable;

class Karyawan extends Authenticatable
{

该类扩展了模型类,因此模型功能仍然可用。

编辑:

在这里,复制粘贴此模型,您应该学习一些PSR,尤其是PSR-4

namespace App\Models;

use App\Models\Cuti;
use App\Models\Role;
use App\Models\Divisi;
use App\Models\Jabatan;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Karyawan extends Authenticatable
{
    use HasFactory;

    protected $guarded = ['karyawan_id'];
    protected $table = 'karyawans';

    public function scopeSearch($query, array $searchs) {

        $query->when($searchs['search'] ?? false, function($query, $search) {
            return $query->where('nama', 'like', '%' . $search . '%')
            ->orWhere('divisi', 'like', '%' . $search . '%') 
            ->orWhere('jabatan', 'like', '%' . $search . '%')
            ->orWhere('agama', 'like', '%' . $search . '%')
            ->orWhere('nik', 'like', '%' . $search . '%'); 
        });
    }

    public function role_id()
    {
        return $this->belongsTo(Role::class);
    }

    public function divisi()
    {
        return $this->belongsTo(Divisi::class);
    }

    public function jabatan()
    {
        return $this->belongsTo(Jabatan::class);
    }

    public function cuti()
    {
        return $this->hasMany(Cuti::class);
    }
}
 类似资料:
  • 传递给Illumate\Auth\EloquentUserProvider的参数1::validateCreentials()必须是Illumate\合同\Auth\身份验证的实例,应用程序\模型\用户给定的实例,在D:\xampp\htdocs\后端\电子商务\供应商\laravel\框架\src\Illumate\Auth\SessionG中uard.php第384行----我有这个问题请帮我

  • 传递给Illumate\Auth\SessionGuard::登录()的参数1必须是Illumate\合同\Auth\身份验证的实例,Illumate\Http\重定向响应的实例 我有我的注册控制器,它在创建用户之前检查成员身份是否存在于单独的成员表中。对于现有成员Id,它可以正常工作,但是当用户输入一个不存在的Id时,我需要它重定向到带有错误消息的同一注册页面。但我得到的只是上面的错误。请注意,

  • 我正在尝试在Laravel5.6上运行php artisan db:seed。39和获取错误: 方法照明\数据库\查询\生成器::提供不存在。 报价型号代码: 任务模型 数据库种子文件 我做得不对的是什么?

  • 我试图做api-auth通过检查生成令牌从登录用户的用户名与md5加密方法在laravel 5.5飞,不想保存令牌到用户的表。当用户注销时,令牌将无效。URL将是这样的: http://myserver.com/products?token=...... 我该怎么做? 新增-这是第44届世界技能大赛的测试项目,以下为测试项目文件: 认证 A.登录(v1/auth/登录) 描述:供客户端通过用户名和

  • 当我使用HTML2Canvas评估图像时,我得到了这个错误。 CORS策略阻止从来源“http://localhost:8080”访问位于“http://testdomain.com/storage/images/products/user_front.png”的映像:请求的资源上没有“Access-Control-Allow-Origin”标头。 下面是我的cors配置。 有人能帮我吗?

  • AUTH password 通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用密码来保护 Redis 服务器。 如果开启了密码保护的话,在每次连接 Redis 服务器之后,就要使用 AUTH 命令解锁,解锁之后才能使用其他 Redis 命令。 如果 AUTH 命令给定的密码 password 和配置文件中的密码