如果你想在 laravel 中创建一个多重认证系统。
有卫兵的概念。
laravel 认证系统使用 config/auth.php 目录下提到的默认守卫
您必须为您的管理面板注册提供程序和保护。
注册守卫
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'users' => [
'driver' => 'session',
'provider' => 'users',
],
]
注册提供商
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
]
在注册您的提供者和警卫之后。为您的管理员创建一个单独的登录控制器,如下所示
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
class AdminLoginController extends Controller
{
use AuthenticatesUsers;
protected string $guard = 'admin';
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
public function guard()
{
return Auth::guard($this->guard);
}
public function showLoginForm()
{
// view for admin login
}
public function authenticated(Request $request, $user)
{
// redirect after authentication
}
public function loggedOut()
{
// redirect after logout
}
}