如何将Django ldap用户添加到Django ModelBackend组

时间:2016-06-05 02:25:15

标签: python django django-admin django-login

我使用ModelBackend(默认)运行Django-1.7.7,用户少,2组。

现在我已经使用Model Backend实现了Ldap Backend。 但之后我必须自动将所有Ldap Authenticated用户添加到其中一个Model组,当用户进行Authenticated时。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以使用Django LDAP功能避免在模型中存储用户。您应该“询问”您的LDAP服务器,如果该用户的凭据是正确的,那么您可以执行以下操作:将用户名存储在变量会话中,重定向到特定页面,在每个页面中您都可以检查是否使用用户名变量会话是正确的,等等......

- SETTINGS.PY -

# LDAP Configuration.
import ldap
from django_auth_ldap.config import LDAPSearch

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

# Binding and connection options.

# Address (by IP or Hostname) of LDAP Server (Directory Active)
AUTH_LDAP_SERVER_URI = "ldap://xxx.xxx.x.xxx"
# DN of user through we bind to LDAP Server.
AUTH_LDAP_BIND_DN = "CN=xxx, CN=xxx, DC=xxx, DC=xxx"
# Password of user through we bind to LDAP Server.
AUTH_LDAP_BIND_PASSWORD = "xxxxxx"
# Node where we start to search users. Use to be DN (of random user) without the last one parameter.
AUTH_LDAP_USER_SEARCH = LDAPSearch("CN=xxx, DC=xxx, DC=xxx", ldap.SCOPE_SUBTREE, "(samAccountName=%(user)s)")

然后您可以在视图中使用它,以便检查是否存在特定用户:

- VIEWS.PY -

con = ldap.initialize("ldap://ldapserver")
con.simple_bind_s( userDN, passwordUser )
filter = '(sAMAccountName=' + "loginName" + ')'
user = con.search_s( base_dn, ldap.SCOPE_SUBTREE, filter, attrs )
con.unbind()