【发布时间】:2018-03-29 21:19:30
【问题描述】:
我正在开发一个 Web 应用程序,供 LDAP 用户登录和编辑他们的属性,例如用户名、描述等。我想知道是否有办法修改登录用户的属性。 python-ldap3库的修改操作符是要走的路,但我只能在代码本身修改一个指定的用户。
是否可以将此作为登录用户的通用功能?我搜索了解决方案,但找不到任何东西。
这是我的修改操作符(modify.py):
from ldap3 import Server, Connection, ALL, MODIFY_REPLACE
s = Server('192.168.1.154', get_info=ALL)
c = Connection(s, 'cn=ldap_user,cn=Users,dc=domain,dc=com', 'Password', auto_bind=False)
c.bind()
c.modify('cn=ldap_user,cn=Users,dc=domain,dc=com',
{'givenName': [(MODIFY_REPLACE, ['Test'])],
'sn': [(MODIFY_REPLACE, ['User'])]})
print(c.result)
c.unbind()
顺便说一句,我正在使用 Django,所以在这一点上,我什至不知道我必须在哪里和做什么。
我的 edit_profile 视图:
def edit_profile(request):
if request.method == 'POST':
form = EditProfileForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
return redirect(reverse('accounts:view_profile'))
else:
form = EditProfileForm(instance=request.user)
args = {'form': form}
return render(request, 'accounts/edit_profile.html', args)
我的 EditProfileForm:
class EditProfileForm(UserChangeForm):
first_name = forms.CharField(max_length=30, required=False,
widget=forms.TextInput(
attrs={
'class': 'form-control',
'type': 'text',
'name': 'first_name',
}
)
)
last_name = forms.CharField(max_length=30, required=False,
widget=forms.TextInput(
attrs={
'class': 'form-control',
'type': 'text',
'name': 'last_name',
}
)
)
email = forms.EmailField(max_length=30, required=True,
widget=forms.TextInput(
attrs={
'class': 'form-control',
'type': 'email',
'name': 'email',
}
)
)
password = forms.CharField(required=False,
widget=forms.PasswordInput(
attrs={
'class': 'form-control',
'type': 'hidden',
'name': 'password',
}
)
)
class Meta:
model = LdapUser
fields = (
'first_name',
'last_name',
'email',
'password'
)
【问题讨论】: