LarAvel(多用户认证,admin、user分表)

1. 目的

本文来简单的讲解 laravel 中guard 用法,实现 admin 和 user 多表登陆(只讲了登陆功能,其它的功能都一样,不多赘述)

2. 配置

首先需要在 auth.php 中配置 adminguardsproviders

什么是 guard 呢?在我看来它就像是部落,user 就像是部落的人,想找部落里的人就要指定部落,\Auth::guard('admin')->user(),不加guard默认取'web'部落中的人

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

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

  // providers 中的这个模型将使用默认的 Eloquent 认证来驱动。
  // 如果你的应用程序没有使用 Eloquent,请选择使用 Laravel 查询构造器的 database 认证驱动。
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

3. 创建相关文件

  1. 首先 art make:auth 创建 laravel 自带的登陆界面,并且创建 Admin Model 及其迁移文件
art make:model Admin -m
  • 修改 Admin.php

      namespace App;
    
      use Illuminate\Notifications\Notifiable;
      use Illuminate\Foundation\Auth\User as Authenticatable;
    
      class Admin extends Authenticatable
      {
          use Notifiable;
    
          /**
           * The attributes that are mass assignable.
           *
           * @var array
           */
          protected $fillable = [
              'name', 'email', 'password',
          ];
    
          /**
           * The attributes that should be hidden for arrays.
           *
           * @var array
           */
          protected $hidden = [
              'password', 'remember_token',
          ];
      }
    
  • 修改 Admin 的迁移文件 ,后台采用 namepassword 验证,修改完成后 art migrate 生成数据表

   public function up()
   {
       Schema::create('admins', function (Blueprint $table) {
           $table->increments('id');
           $table->string('name')->unique();
           $table->string('password');
           $table->rememberToken();
           $table->timestamps();
       });
  • 视图 因为要实现前后台用户的不同登陆,所以首先需要 2 组视图界面
    • 复制 layouts 下面的 app.blade.php,改名为 admin.blade.php 并对该文件做出修改
    // 将路由指向 admin.login
    // 将 Auth::guest() 改为 Auth::guard('admin')->guest()
    
    

你可能感兴趣的:(LarAvel(多用户认证,admin、user分表))