簡體   English   中英

傳遞給 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的參數 1 必須是 Illuminate\Contracts\Auth\Authenticatable 的實例

[英]Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable

所以我試圖驗證一個不尋常的登錄名 model, Teachers ,它使用Employee IDPassword作為登錄參數。 數據庫也不是普通用戶而是教師。 我收到以下錯誤。 **

傳遞給 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的參數 1 必須是 Illuminate\Contracts\Auth\Authenticatable 的實例,給定的 App\Teacher 實例,在 C 中調用:\xampp\htdocs\schoolcms\vendor\laravel\framework \src\Illuminate\Auth\SessionGuard.php 第 385 行

** 這是我的Teacher model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Teacher extends Model
{
    //
}

這是我正在嘗試登錄的TeacherController部分

<?php

namespace App\Http\Controllers;

use App\Teacher;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

class TeacherController extends Controller
{
  
  public function login()
  {
    $teachers = Teacher::all();
    return view('index', [ 'layout'=>'login']);
    
  }

  /**
   * authenticate login credentials.
  
  
   */
  public function authenticate(Request $request)
  {

        $userCredentials = $request->only('EmployeeID', 'Password');

        // check user using auth function
        if (Auth::attempt($userCredentials)) {
             return view('student', [ 'layout'=>'index']);
            
        }

        else {
            return view('index', [ 'layout'=>'master']);
        }
    /*return view('student', ['students'=>$teachers, 'layout'=>'register']);*/
  }



}

這是我的config/auth.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */


    

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'teachers',
      ],
    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        /*A guard key has an array for it’s value and that array has two key-value pairs. First driver and second is provider.*/
        'web' => [
            'driver' => 'session',
            'provider' => 'teachers',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        

        /*Providers are used to define how our users will be retrieved and how the user data with be stored after authentication.
        /We are using eloquent so we will define the model that will be used for authentication.
        */
        'teachers' => [
            'driver' => 'eloquent',
            'model' => App\Teacher::class,
        ],


    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */

    'passwords' => [
        

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

    /*
    |--------------------------------------------------------------------------
    | Password Confirmation Timeout
    |--------------------------------------------------------------------------
    |
    | Here you may define the amount of seconds before a password confirmation
    | times out and the user is prompted to re-enter their password via the
    | confirmation screen. By default, the timeout lasts for three hours.
    |
    */

    'password_timeout' => 10800,

];

通過在 Controller 中進行自定義,該方法可能會更容易。

public function authenticate(Request $request)
  {

        $userCredentials = $request->only('EmployeeID', 'Password');

        // check user using auth function
    
      if ($teachers=Teacher::where($userCredentials)->first()) {
          auth()->login($teachers);
          // redirect to the intended view
       }
        else {
           // redirect to the view on failure to authenticate with a failure message
        }
    
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM