自助重置密码中账号由mail改为userid值
Opened this issue · 17 comments
大佬,企微的接入在重置密码页面需要使用userid为账户信息,如何更改
方便贴个图么?目前是有报错,对吗?
检验的逻辑是通过企业微个的企业邮箱,来提取用户名(一般情况下,企业邮箱前缀和用户和账号是一样的)
将提取出来的邮箱前缀做为AD的账户,再到AD上做一次检验,查看当前用户是否有效。
大佬,我这有一半人的用户名为caozhu 邮箱地址为zhu.cao
🤣,那这种就比较麻烦了。
企业微信上还有其它标识和AD上能对应上的吗?
如果说caozhu 邮箱地址为zhu.cao
这种规律比较固定,你可以尝试在账号检验的逻辑里,加一个尝试将账号caozhu转换成zhu.cao这种格式,再尝试做一次检验,2种格式,任意一种检验通过就算OK。
下午我让python同事先看看 最好的方式还是userinfo中获取userid信息
另外也有个性化英文名为邮箱的,转换的路子走不通
userinfo 之前是用的这个,后面我忘了啥原因,API有限制,你们看看能不能解决。
如果这个方式可行的话,麻烦告诉我一下哈,😁
不敢相信,我在format_username.py 中把email 改为userid .重启后成了
😂,那说明你们直接用的就是userid,你们应该是有企微和AD之间做同步吧?
是的,还有一个问题;密码复杂度不符合的情况下提示我想不显示错误信息,就显示密码不符合复杂度要求等文件信息;这个msg可以改哪个文件的(resetpwd功能页面)
密码复杂度后端的检查做得比较粗糙,就在form里,检验表单,如果不符合正则,就返回error_message。
应该是在index那里面,这里没太细分,你把那个else的逻辑改下就行。
看下日志中的报错信息是啥。
这个错误就是 用户名为test1131 新密码设置为Test1131@ ,新密码在AD域的复杂度校验不通过;
我想直接固定这个消息为,
账号未能解锁,错误信息:密码不能包含用户名的连续字符,请重新设定密码
修改resetpwd/utils.py
引入LDAPUnwillingToPerformResult
from ldap3.core.exceptions import LDAPException, LDAPUnwillingToPerformResult
在109行开始插入
except LDAPUnwillingToPerformResult:
context = {
'global_title': TITLE,
'msg': '账号未能解锁/修改,错误信息:密码复杂度不符合要求。',
'button_click': "window.location.href='{}'".format('/auth'),
'button_display': "重新认证授权"
}
return render(request, msg_template, context)
在ldap3的exceptions.py定义了所有LDAP的连接异常,如果说需要详细的输出不同异常的消息,可以参照上面的形式返回你要的消息。