问题标签 [fr3dldapbundle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
symfony - 覆盖 FR3DLdapBundle 功能和控制器
我已经使用 FOSUserBundle 安装和配置了 FR3DBundle 并且一切正常,但是我不明白,为什么 FR3DLdpaBundle 将用户保存在数据库中而不使用密码?当我第二次尝试登录时,出现两种情况:如果链提供者的顺序是:
providers: [fr3d_ldapbundle,fos_userbundle ]
:
FR3DLdapBundle 试图在数据库中再次插入同一用户(重复条目)!
当链提供者的顺序是:
在我看来,错误无效凭据导致用户在第一次登录时没有密码保存在数据库中。所以我问有没有办法破解 Bundle 并覆盖一些控制器和功能以使登录功能成功工作?
这是我的 Config.yml 文件:
我的 security.yml :
authentication - Symfony 3 身份验证和授权
我正在基于最新的 Symfony 框架(v3.3)构建一个站点。我对使用哪些软件包没有限制。认证/授权机制会随着时间的推移变得复杂;目前它有以下要求:
- “root”用户的内存中身份验证
- 在“root”身份验证之上,以下之一:
- 本地数据库用户/通过认证
- LDAP 身份验证
- Azure 活动目录 (graph-api)
关于授权,
- 有四个级别:ROOT、ADMIN、USER、ANONYMOUS
- 对于用户,我们需要有一组安全组来规范哪些数据部分是可访问的(即硬件、软件、附件)。
所以,问题是:
Symfony 3 是否提供了开箱即用的此类设置的简单解决方案?(即使用 LdapUserProvider)
如果上述问题的答案是“否”,我正在考虑使用 FOSUserBundle 和 FR3DLdapBundle。到 2017 年年中,这个决定会使我的生活长期复杂化还是会简化它?
symfony - 如何使用 fr3d_ldapbundle 以编程方式登录
我正在使用 symfony 3.3 和 fos_userbundle 和 fr3d_ldapbundle 来通过 LDAP 验证我的用户。如果尝试使用生成的标准登录表单,登录将正常工作。但我需要做的是手动(以编程方式)登录。使用 fr3d_ldapbundle 的最佳方法是什么?
对不起,伙计们,我给你更多的细节:
如果我尝试使用fos_user.user_manager登录正常工作,但使用fr3d_ldap.ldap_manager它不起作用。(isPasswordValid函数返回“用户名或密码无效”)
从 LDAP 服务器正确检索用户,但如果我打印$user对象,“密码”字段为空。使用标准登录表单,身份验证工作正常,用户名存储在我的 fos 用户捆绑表中,密码字段为空。这可能是我的问题吗?
$salt也是空的。
这是我的 LoginAction 代码:
有人能帮助我吗?谢谢你。
symfony - 使用 fr3d ldapbundle 和 fos userbundle 登录,找到用户但在数据库插入用户名为空
(最后更新)
我在从特定 LDAP 注册任何用户时遇到问题,即使在从 LDAP 找到用户之后,当它尝试注册时,用户名为空,因此它会触发违规约束并回滚。我正在使用 Sonata 用户包、FR3D LDAP 包和 FOS 用户包。
开发日志
如您所见,它说用户找到了正确的用户名:
在 LDAP 上找到用户 gpotest {"action":"loadUserByUsername", "username":"gpotest" ,"result":"found"}
但是在绑定之后:
security.INFO:用户已成功通过身份验证。{ “用户名”:空}
但是,通过使用下面 config.yml 中注释掉的 Online LDAP 服务器配置,我能够成功连接并进行身份验证:
以下是我的相关文件内容:
作曲家.json
配置.yml
安全.yml
用户类:(我已经删除了不相关的字段)
上面的扩展类基本上导致 FOSUserBundle 的用户名属性的用户类 https://github.com/sonata-project/SonataUserBundle/blob/4.x/src/Entity/BaseUser.php https://github.com/sonata-project /SonataUserBundle/blob/4.x/src/Model/User.php https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.php
覆盖的 user.orm.xml:(我已经删除了不相关的字段)
更新 1:仍然无法使其工作,因此我们尝试将“邮件”代替 samaccountname,我不知道为什么如果我处于调试过程中会影响我的令牌,但它确实有效。电子邮件用作用户名。注销并与另一个人一起尝试,它工作。奇怪的是,在我尝试添加要保存的参数后,作为用户名的邮件停止工作。这次当我让另一个人进行测试时,他的电子邮件不起作用,但他的 samaccountname(我一直试图让它工作的东西)起作用了……在这一点上,我不知道到底发生了什么。
更新 2 这是使用 mail 而不是 sAMAccountName 的 setUsername 方法的日志(之后它正确插入 DB)。另一个奇怪的事情是包含 firstName 的 givenName attr 不返回任何内容,但是使用 MS 的 AD 资源管理器,我可以看到它具有 firstName。:
和 config.yml:
总而言之,我感觉在检索信息的那一刻,我只能拉取mail,cn,sn属性。还有,看日志第一行最后一行,有属性":[]。为空正常吗?
symfony - 使用 FR3DLdapBundle 和 FOSUserBundle 与 Symfony 2.8 的 SQL 错误
当我注销并尝试重新登录时,它给了我同样的错误:
(执行 'INSERT INTO fos_user (username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirm_token, password_requested_at, roles, dn, code_utilisateur) VALUES (?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ?)' with params [“riemann”, “riemann”, “riemann@ldap.forumsys.com”, “riemann@ldap.forumsys.com”, 1, null , “”, “2018-05-23 21:26:15”, null, null, “a:1:{i:0;s:9:\”ROLE_USER\”;}”, “uid=riemann,dc =example,dc=com”, null]:
SQLSTATE [23000]:违反完整性约束:1062 Duplicata du champ 'riemann@ldap.forumsys.com' pour la clef 'UNIQ_957A6479A0D96FBF')
好像它试图在更新用户的地方插入一样。