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, 如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'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来限定, 如下:

1
2
3
4
5
6
7
8
9
10
//指定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实现权限控制等。