eryajf / go-ldap-admin

🌉 基于Go+Vue实现的openLDAP后台管理项目
http://ldapdoc.eryajf.net
Apache License 2.0
1.58k stars 265 forks source link

🙋 问题交流。。。 | [Question] 同步用户成功一两分钟后syncState值又变回2 #211

Closed helopng closed 1 year ago

helopng commented 1 year ago

Question Report

你使用了哪个版本? | Which version did you use?

http://ldapdoc.eryajf.net/pages/5769c4/#%E5%89%8D%E8%A8%80 安装文档中使用tar包部署 v0.5.9

预期行为 | Expected behavior

用户点击忘记密码可以完成密码修改

实际行为 | Actual behavior

用户点击忘记密码, 报错提示用户已离职或未同步 Dingtalk_20230510150017

原因分析(如果可以) | Cause analysis (if possible)

同步用户后提示同步成功,然后选已同步可以查询到当前这些用户,syncState=1, 但是过两分钟后所有已同步用户又会变成未同步,syncState=2, 此时用户点击忘记密码无法进行密码重置

同步时的后台日志 Dingtalk_20230510165402

在测试环境中尝试了v0.5.10, 和正式环境是同样现象, 即使在数据库手动修改syncState=1, 过一会还会变回去2

问题重现步骤 | Steps to reproduce the problem

eryajf commented 1 year ago

您好 @helopng👋,我已收到您的反馈,我将安排时间考虑您提交的信息并进行回复。-- 这条信息是由自动回复的机器人发出的。

Hello @helopng. I have received your feedback, and I will arrange time to consider the information you submitted and reply. -- This message is sent by an automatic reply robot.

eryajf commented 1 year ago

这个状态表示用户在MySQL与ldap之间同步的状态,有定时任务会检测,如果总是变成2,说明你这个用户实际在ldap中不存在,需要点击右侧的上传按钮,将用户同步到ldap中。

helopng commented 1 year ago

我装了apache的LDAP工具, 连接LDAP这些用户确实存在了, 不知为何那个状态判断不对, 我fork重构建了一版把重置密码判断syncStates那里删了, 如果找不出问题我打算用这个更新到生产环境去...

Dingtalk_20230511093520

helopng commented 1 year ago

我前面是点了批量同步,提示成功的, 然后就那一分钟左右,点忘记密码邮件可以发送成功, 也就是定时任务运行后就又不行了

我又试了下右侧的同步按钮, 提示用户已存在了, 是不是判断用户那里有一丢丢问题, 还是我的ldap? mysql的问题 Dingtalk_20230511094409

eryajf commented 1 year ago

既然都已经调试到这一步了,那何不打印一下,看看为啥会有这个报错提示呢,兴许是代码的bug,也有可能的确是你那边环境的因素

helopng commented 1 year ago

找到问题了 我的OpenLDAP是从别的文章那看的, 对比了下步骤差不多就复制那篇创建了, 然后人员People那个ou创建成了大写的P 输出日志里sqlUser的ou是people, Openldap应该没区分大小写,所以能同步过去, 但是一对比后sqlUser是区分大小写的导致用户UserDN不一样, 状态又被改回去... Dingtalk_20230512112704

这个people你在文档里大写加粗高亮说明下吧