动态 select Laravel 身份验证驱动程序
Dynamically select Laravel authentication driver
目前我的应用程序中有两个级别的用户。标准用户,使用 Laravel 的内置数据库身份验证;和一个管理用户,它通过 Adldap2.
使用 LDAP 身份验证
config/auth.php
:
...
"guards" => [
"web" => [
"driver" => "session",
"provider" => "users",
],
"admin" => [
"driver" => "session",
"provider" => "admins",
],
"providers" => [
"users" => [
"driver" => "eloquent",
"model" => App\User::class,
],
"admins" => [
"driver" => "ldap",
"model" => App\Admin::class,
],
],
...
此设置完全没有问题。
现在,可以拥有来自公司外部的管理用户。这些用户不会通过 LDAP 进行身份验证,而是通过新 admins
table 中的数据库记录进行身份验证。我可以设置第三个提供商,但显然进入应用程序并在所有检查权限的地方重写不会很有趣,所以我希望有另一种方法。
假设我们有 LDAP 用户使用 LDAP 域登录,例如username@corp.internal
,有没有办法根据提供的用户名将驱动程序从 "ldap" 更改为 "eleoquent"?
我很确定 https://github.com/Adldap2/Adldap2-Laravel 你可以动态地做你想做的事,我过去也这样做过。
这个库有这个选项:
'login_fallback' => env('ADLDAP_LOGIN_FALLBACK', true), // While default is false
该选项让您:
"/*
|--------------------------------------------------------------------------
| Login Fallback
|--------------------------------------------------------------------------
|
| The login fallback option allows you to login as a user located on the
| local database if active directory authentication fails.
|
| Set this to true if you would like to enable it.
|
| This option must be true or false and is only
| applicable to the DatabaseUserProvider.
|
*/"
这就是您所需要的:如果用户在 LDAP 上没有凭据,请在您的本地数据库中搜索该用户。
关于优先顺序的完整帖子在这里:
目前我的应用程序中有两个级别的用户。标准用户,使用 Laravel 的内置数据库身份验证;和一个管理用户,它通过 Adldap2.
使用 LDAP 身份验证config/auth.php
:
...
"guards" => [
"web" => [
"driver" => "session",
"provider" => "users",
],
"admin" => [
"driver" => "session",
"provider" => "admins",
],
"providers" => [
"users" => [
"driver" => "eloquent",
"model" => App\User::class,
],
"admins" => [
"driver" => "ldap",
"model" => App\Admin::class,
],
],
...
此设置完全没有问题。
现在,可以拥有来自公司外部的管理用户。这些用户不会通过 LDAP 进行身份验证,而是通过新 admins
table 中的数据库记录进行身份验证。我可以设置第三个提供商,但显然进入应用程序并在所有检查权限的地方重写不会很有趣,所以我希望有另一种方法。
假设我们有 LDAP 用户使用 LDAP 域登录,例如username@corp.internal
,有没有办法根据提供的用户名将驱动程序从 "ldap" 更改为 "eleoquent"?
我很确定 https://github.com/Adldap2/Adldap2-Laravel 你可以动态地做你想做的事,我过去也这样做过。
这个库有这个选项:
'login_fallback' => env('ADLDAP_LOGIN_FALLBACK', true), // While default is false
该选项让您:
"/*
|--------------------------------------------------------------------------
| Login Fallback
|--------------------------------------------------------------------------
|
| The login fallback option allows you to login as a user located on the
| local database if active directory authentication fails.
|
| Set this to true if you would like to enable it.
|
| This option must be true or false and is only
| applicable to the DatabaseUserProvider.
|
*/"
这就是您所需要的:如果用户在 LDAP 上没有凭据,请在您的本地数据库中搜索该用户。
关于优先顺序的完整帖子在这里: