美文网首页
(用户认证系统与独立设置guard进行登录处理)2020-04-

(用户认证系统与独立设置guard进行登录处理)2020-04-

作者: 浪子游剑 | 来源:发表于2020-04-05 18:03 被阅读0次

1、Guard
我的理解他应该是一个类似用户认证的东西。
默认使用的是user模型的。
如果存在前后台两个人用户组。就必须要使用guard来进行指定。那么问题来了,怎么指定呢?
在 config/auth.php 中有配置 guards 的参数,可以看出来 web 和 api 是两个 guards。
在平时的业务中api可能更多的是用户前台用户的操作,而web更多的是后台用户的操作。

过程:
1、在 config/auth.php 中有配置 guards 和provders的参数

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

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

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

2、使用artisan make:model Admin -fm来创建admin模型
3、定义好路由指向admin的守卫

Route::group(['middleware' => ['web','auth:admin'], 'prefix' => 'admin', 'namespace' => 'Modules\Admin\Http\Controllers'], function () {
    Route::get('/', 'AdminController@index');
    Route::resource('Person','PersonController');
});

4、在admin/auth/login.php文件下,重新定义showLoginForm和guard方法。

protected function guard()
    {

        return Auth::guard('admin');
    }

    public function showLoginForm()
    {
        return view('admin::auth.login');
    }

5、使admin模型具有守卫者的功能

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class Admin extends Authenticatable
{
    use Notifiable,HasRoles;
    //
}

6、在admin/auth/login.php文件'guest'改成使用'guest:admin'。不然使用的web守卫

public function __construct()
    {
        $this->middleware('guest:admin')->except('logout');
    }

也可以在admin/auth/login.php文件将'/home'改成'/admin'。

protected $redirectTo = '/admin';

两者选其一

相关文章

网友评论

      本文标题:(用户认证系统与独立设置guard进行登录处理)2020-04-

      本文链接:https://www.haomeiwen.com/subject/rbfpphtx.html