anthonyedmonds / laravel-ldap-emulator
在本地环境中工作时会自动启动 LDAP 模拟器。
Requires
- php: ^8.3
- directorytree/ldaprecord-laravel: ^3
- spatie/laravel-permission: ^6
Requires (Dev)
- illuminate/support: ^11
README
在本地环境中工作时会自动启动 LDAP 模拟器。
为 Laravel 构建。
基于 LDAP Record 提供的 LDAP 模拟。
支持 Spatie's Laravel Permission 提供的角色。
安装
通过 Composer 添加库:composer require anthonyedmonds/laravel-ldap-emulator --dev
将 LdapEmulatorServiceProvider
添加到 bootstrap/providers.php
use AnthonyEdmonds\LaravelLdapEmulator\Providers\LdapEmulatorServiceProvider; return [ ... LdapEmulatorServiceProvider::class, ... ];
如果你手动加载服务提供者,则 LdapEmulatorServiceProvider
必须在 LdapRecord\Laravel\LdapServiceProvider
之后加载。
安装完成后,导出配置:php artisan vendor:publish --provider="AnthonyEdmonds\LaravelLdapEmulator\Providers\LdapEmulatorServiceProvider"
配置
所有配置都可以在发布的 config/ldap-emulator.php
文件中完成。
有关设置用户的进一步说明请参阅注释。
- 为了效率,请将用户总数保持在最低限度
- 你可以创建混合用户,这些用户可以自动导入或保留在活动目录中
- 你只能将角色分配给自动导入的用户
使用方法
当你的系统 APP_ENV
键设置为 local
时,将启动 LDAP 模拟器实例。
除了配置要添加的用户池外,系统将像连接了 LDAP 服务器一样运行。
创建后,导入的用户不会更新,但如果 LdapRecord 设置为同步,则它们可以在登录时同步。
请注意,模拟器的功能有一些限制,这些限制在这里描述。
身份验证
当调用 Auth::attempt()
时,将触发 Attempting
事件,并允许正在尝试登录的 LdapUser 登录。
如果你使用了一个首先调用 Auth::validate()
的库,如 Laravel Fortify,你将需要首先调用 setActingUser()
方法
Fortify::authenticateUsing(function ($request) { if (config('ldap-emulator.enabled') === true) { LdapEmulatorServiceProvider::setActingUser($request->username); } $validated = Auth::validate([ 'samaccountname' => $request->username, 'password' => $request->password, ]); return $validated ? Auth::getLastAttempted() : null; });
路线图
提出你的想法和建议的工单,或者提出你的贡献的拉取请求。