Laravel多用户Auth登录

xiaoxiao2021-02-28  15

使用多用户登录可能遇到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")就可以使用我们新添加的角色验证了!

转载请注明原文地址: https://www.6miu.com/read-1600155.html

最新回复(0)