我正在使用多种类型用户的laravel
应用程序。
用户
Admin
User-I
User-II
User-III
我已在我的应用中为用户创建了CRUD
功能,并在用户创建期间分配了角色。我有以下User
和Role
表的结构。
角色表
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('role');
$table->string('description');
$table->timestamps();
});
和
用户表
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->integer('role_id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Admin
用户是使用Seeder
创建的,其他users
是从应用程序创建的。
我差不多完成了我的申请,最后我遇到了用户身份验证的问题。
对于我的应用程序,我需要从 Active Directory 同步User-I
类型。所以,我对User-II
和User-III
的CRUD设施有限。我不想创建新的User-I
类型用户,并希望从活动目录导入此类用户详细信息。对User-I
所做的任何更改都应反映在我的应用中。
我的应用程序最近需要此功能。
我已经访问过Adldap2 - Laravel,我无法理解如何在我的情况下使用此功能。
有没有办法将这些用户详细信息导入我的应用程序?
另一个问题是,
导入此类用户详细信息后,我需要从Active Directory和我的应用程序User-I
表中的其他用户验证users
。 Laravel有可能吗?
我是 Windows Server 的新手,并使用 Active Directory 。任何建议都表示赞赏。
答案 0 :(得分:0)
是的,这是可能的,但它有点乱。
我建议您在Laravel中设置所有用户帐户。如果是La用户(在这种情况下,身份验证将基于LDAP)或CRUD用户(在这种情况下,您需要触摸Laravel数据库以检查存储的密码是否有效),您可以向Laravel用户添加标志。您需要在登录过程中写一个额外的步骤,立即将AJAX用户名或两步屏幕,用户只需输入用户名并点击输入即可。这样,您就可以根据用户的标志知道哪种方式进行身份验证。
如果您需要做的就是根据一组用户称为用户I类型对AD进行身份验证,这很容易使用直接php - 只需检查您是否可以使用用户名&密码。如果它绑定,它们将通过身份验证,并可以进入您的应用程序。
但是,如果您希望在某个时间轴上与AD同步,您实际上会在AD用户群的某个子集上提取数据,那么为了决定谁将成为用户,您必须更多地参与其中。它也是一个与登录/身份验证不同的过程。
如果是这种情况,您将需要AD中的Windows服务帐户。使用这些凭据,从Larvel登录到AD并执行ldap_searches从AD中提取一组条目。用于说明PHP搜索/过滤方向的伪代码:
$filter = "(&($extLocField=$extLocName)(|(objectCategory=person)(mail=*)))";
$result = ldap_search($ldap_con,"dc=mycompany,dc=local",$filter) or exit("Unable to search");
获得条目(搜索结果中的ldap_get_entries)后,您可以根据过滤条件选择新用户
$entries = ldap_get_entries($ldap_con, $result);
一旦有了新的用户组,您的代码将需要批量创建新用户并将AD标志添加到用户。
使用服务帐户尝试与AD同步对于直接PHP来说并不错。你真的不需要另一个包(Adldap2 - Laravel)。但是,尝试同步,并有两种不同的登录方法并尝试根据某些时间线方案从AD创建新用户似乎正在尝试做很多事情。以上是关于如何做的一个答案。