BeWithYou

胡搞的技术博客

  1. 首页
  2. PHP
  3. Laravel下自定义Auth

Laravel下自定义Auth


最近在学习Laravel,很多开箱即用的功能比较方便。自带的Auth用户认证就属于其中一种。网站用户和管理后台用户在逻辑上必须得分开,这里记录一下管理后台中用户认证的方法。

  1. 新建项目,修改相关配置,比如.env,config/下的文件等
  2. 修改database/migrations/下的文件,添加所需要的user表,如admin_users表。 结构与自带的user相同
  3. php artisan migrate 新建表
  4. php artisan make:auth 新建相关视图和控制器
  5. 将上一步建立的相关文件复制一份放入各自的自定义目录,比如admin下面,同时记得修改namespace, 大概有Controllers/Auth,resources/views/auth,User.php
  6. 修改config/auth.php, 添加所需要的guards和provider, 如下

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    
        'admin' => [
            'driver' => 'session',
            'provider' => 'admin_users',
        ],
    ],
    
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    
        'admin_users' => [
            'driver' => 'eloquent',
            'model' => App\Models\AdminUser::class,
        ],
    ],
  7. Middleware/Authenticate.php复制一份重命名,可以使用上一步中自定义的guard来进行校验啦
  8. Kernel.php$routeMiddleware注册我们自定义的中间件。
  9. 制定路由功能,可使用Route::group来限定, 如下:

    //指定namespace为Admin 前缀为/admin 中间件为上一步自定义的authAdmin
    //Route::auth();自动注册了相关路由,如/admin/login /admin/logout等
    //闭包内部就不用加/admin的前缀了
    
    Route::group(['namespace' => 'Admin', 'prefix' => '/admin',], function(){
        Route::auth();
    });
    Route::group(['namespace' => 'Admin', 'middleware' => ['authAdmin'],'prefix' => '/admin',], function () {
        Route::get('', 'IndexController@index');
    });
  10. 修改Controllers/admin/auth/下的控制器,把他们的路径和视图改成想要的。
  11. 框框基本搭好,后面主要工作在于编写自定义的中间件,比如根据路由URL实现权限控制等。
回到顶部