Laravel多使用者Auth登入
阿新 • • 發佈:2018-12-06
使用多使用者登入可能遇到Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentia...的錯誤,那麼,如何實現多使用者登入呢?
首先,進入/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', //預設的Auth方式 'passwords' => 'users', ], /* |-------------------------------------------------------------------------- | 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' => [ 'web' => [ //預設的Auth方式 'driver' => 'session', 'provider' => 'users', //提供者,在下面設定 ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], 'add' => [ //這裡是要增加的登入方式名稱 'driver' => 'session', //使用session來控制登入,登出 'provider' => 'add', //使用的提供者名稱 ], ], /* |-------------------------------------------------------------------------- | 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' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Daili::class, ], 'admins' =>[ 'driver' => 'eloquent', 'model' => App\Admin::class, ], 'add' => [ 'driver' => 'eloquent', //這裡用database或者eloquent,建議使用eloquent 'table' => 'App\Add::class', //用database的話,用表名,用eloquent的話,用App\Add::class ], ], /* |-------------------------------------------------------------------------- | Resetting Passwords |-------------------------------------------------------------------------- | | Here you may set the options for resetting passwords including the view | that is your password reset e-mail. You may also set the name of the | table that maintains all of the reset tokens for your application. | | 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' => [ 'users' => [ 'provider' => 'users', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], ], ];
相對應的,我們使用php artisan make:model Add,來建立一個model
<?php namespace App; // use Illuminate\Database\Eloquent\Model; //注意這裡要改變,因為我們用的是Auth的 use Illuminate\Foundation\Auth\User as Authenticatable; class Daili extends Authenticatable //繼承從Model改成 Auth這個 { protected $table = 'adds'; //表名 protected $fillable = [ 'name','mobile','password' ]; protected $hidden = [ 'password' ]; }
可以了,大功告成,以後使用Auth::guard("add")就可以使用我們新新增的角色驗證了!