python自动登录windows_我可以使用用户windows登录自动登录到web应用程序吗?

Added to settings.py

### ACTIVE DIRECTORY SETTINGS

# AD_DNS_NAME should set to the AD DNS name of the domain (ie; example.com)

# If you are not using the AD server as your DNS, it can also be set to

# FQDN or IP of the AD server.

AD_DNS_NAME = 'example.com'

AD_LDAP_PORT = 389

AD_SEARCH_DN = 'CN=Users,dc=example,dc=com'

# This is the NT4/Samba domain name

AD_NT4_DOMAIN = 'EXAMPLE'

AD_SEARCH_FIELDS = ['mail','givenName','sn','sAMAccountName']

AD_LDAP_URL = 'ldap://%s:%s' % (AD_DNS_NAME,AD_LDAP_PORT)

In the auth.py file

from django.contrib.auth.models import User

from django.conf import settings

import ldap

class ActiveDirectoryBackend:

def authenticate(self,username=None,password=None):

if not self.is_valid(username,password):

return None

try:

user = User.objects.get(username=username)

except User.DoesNotExist:

l = ldap.initialize(settings.AD_LDAP_URL)

l.simple_bind_s(username,password)

result = l.search_ext_s(settings.AD_SEARCH_DN,ldap.SCOPE_SUBTREE,

"sAMAccountName=%s" % username,settings.AD_SEARCH_FIELDS)[0][1]

l.unbind_s()

# givenName == First Name

if result.has_key('givenName'):

first_name = result['givenName'][0]

else:

first_name = None

# sn == Last Name (Surname)

if result.has_key('sn'):

last_name = result['sn'][0]

else:

last_name = None

# mail == Email Address

if result.has_key('mail'):

email = result['mail'][0]

else:

email = None

user = User(username=username,first_name=first_name,last_name=last_name,email=email)

user.is_staff = False

user.is_superuser = False

user.set_password(password)

user.save()

return user

def get_user(self,user_id):

try:

return User.objects.get(pk=user_id)

except User.DoesNotExist:

return None

def is_valid (self,username=None,password=None):

## Disallowing null or blank string as password

## as per comment: http://www.djangosnippets.org/snippets/501/#c868

if password == None or password == '':

return False

binddn = "%s@%s" % (username,settings.AD_NT4_DOMAIN)

try:

l = ldap.initialize(settings.AD_LDAP_URL)

l.simple_bind_s(binddn,password)

l.unbind_s()

return True

except ldap.LDAPError:

return False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值