Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自助重置密码中账号由mail改为userid值 #37

Open
m84686660 opened this issue Sep 19, 2023 · 17 comments
Open

自助重置密码中账号由mail改为userid值 #37

m84686660 opened this issue Sep 19, 2023 · 17 comments

Comments

@m84686660
Copy link

大佬,企微的接入在重置密码页面需要使用userid为账户信息,如何更改

@capricornxl
Copy link
Owner

方便贴个图么?目前是有报错,对吗?
检验的逻辑是通过企业微个的企业邮箱,来提取用户名(一般情况下,企业邮箱前缀和用户和账号是一样的)
将提取出来的邮箱前缀做为AD的账户,再到AD上做一次检验,查看当前用户是否有效。

@m84686660
Copy link
Author

大佬,我这有一半人的用户名为caozhu 邮箱地址为zhu.cao

@capricornxl
Copy link
Owner

🤣,那这种就比较麻烦了。
企业微信上还有其它标识和AD上能对应上的吗?
如果说caozhu 邮箱地址为zhu.cao这种规律比较固定,你可以尝试在账号检验的逻辑里,加一个尝试将账号caozhu转换成zhu.cao这种格式,再尝试做一次检验,2种格式,任意一种检验通过就算OK。

@m84686660
Copy link
Author

下午我让python同事先看看 最好的方式还是userinfo中获取userid信息

@m84686660
Copy link
Author

另外也有个性化英文名为邮箱的,转换的路子走不通

@capricornxl
Copy link
Owner

userinfo 之前是用的这个,后面我忘了啥原因,API有限制,你们看看能不能解决。
如果这个方式可行的话,麻烦告诉我一下哈,😁

@m84686660
Copy link
Author

不敢相信,我在format_username.py 中把email 改为userid .重启后成了

@capricornxl
Copy link
Owner

😂,那说明你们直接用的就是userid,你们应该是有企微和AD之间做同步吧?

@m84686660
Copy link
Author

是的,还有一个问题;密码复杂度不符合的情况下提示我想不显示错误信息,就显示密码不符合复杂度要求等文件信息;这个msg可以改哪个文件的(resetpwd功能页面)

@capricornxl
Copy link
Owner

密码复杂度后端的检查做得比较粗糙,就在form里,检验表单,如果不符合正则,就返回error_message。
应该是在index那里面,这里没太细分,你把那个else的逻辑改下就行。

@m84686660
Copy link
Author

image
我想把这个error_message就改成密码复杂度不符合的直白信息

@m84686660
Copy link
Author

image
这里改哪个合适 我就不引用err_message值就行了

@capricornxl
Copy link
Owner

image
这里实际是已经有复杂度校验了,看上面的报错是走到下面的逻辑了。每次修改密码或重置密码,都会去调一次解锁账号。
因为你也清楚有时密码错误次数过多,账号是锁定的。
看上面的报错是解锁账号失败了。

@capricornxl
Copy link
Owner

看下日志中的报错信息是啥。

@m84686660
Copy link
Author

这个错误就是 用户名为test1131 新密码设置为Test1131@ ,新密码在AD域的复杂度校验不通过;
我想直接固定这个消息为,
账号未能解锁,错误信息:密码不能包含用户名的连续字符,请重新设定密码

@capricornxl
Copy link
Owner

修改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)

见图示例
image

@capricornxl
Copy link
Owner

在ldap3的exceptions.py定义了所有LDAP的连接异常,如果说需要详细的输出不同异常的消息,可以参照上面的形式返回你要的消息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants