认证原理
Laravel 的认证组件由 guards 和 providers 组成,guard 定义了用户在每个请求中如何实现认证,例如,Laravel 通过session guard 来维护 Session 存储的状态和 Cookie。provider 定义了如何从持久化存储中获取用户信息,laravel 底层支持通过 Eloquent 和数据库查询构建器两种方式来获取用户。
了解了它的认证原理,那么让我们开始去实现前后台登录认证吧。前台的认证使用默认的就好,这里主要讲怎么在有前台认证的情况下同时实现后台验证。
1、生成laravel自带的认证脚手架
$ php artisan make:auth
以上命令将自动生成auth模板文件夹和layouts模板文件夹以及路由信息:
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
2、修改config/auth.php配置,添加后台认证信息
2.1 在 gurads 处,添加 admin guard 用于后台管理员认证
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
2.2 在 providers 处添加 admins provider,使用 Admin 模型
'admins' => [
'driver' => 'eloquent',
'model' => App\Http\Model\Admin\Admin::class,
],
3、创建后台管理员模型
$ php artisan make:model Http/Model/Admin/Admin -m
//-m 参数会同时生成数据库迁移文件 xxx_create_admins_table
//等同于
//php artisan make:model Admin
//php artisan make:migration creaet_admins_table
4、修改数据库迁移文件xxx _create_admins_table
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
5、创建表并生成临时数据
5.1 database/factories/ModelFactory.php, 添加数据:
$factory->define(App\Http\Model\Admin\Admin::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'password' => $password ?: $password = bcrypt('123456'),
'email' => $faker->email,
'remember_token' => str_random(10),
];
});
5.2 生成数据方式1---使用tinker:
$ php artisan tinker
use App;
factory(App\Http\Model\Admin\Admin::class,5)->create();//3表示生成3条测试数据
5.3 方式2---在 database/seeds 目录下生成 AdminsTableSeeder.php 文件
$ php artisan make:seeder AdminsTableSeeder
编辑该文件