Django接入公司LDAP服务器(仅登录认证)

只是LDAP登录认证,没有用户修改删除分组等操作

使用Django自带的登录认证

django.contrib.auth

然后在settings.py中配置即可,不需要自己再封装函数

 配置参考django中ldap验证的三种方式,你需要哪种?_Tian丶Yuting-CSDN博客_django ldap

登录认证
from django.contrib.auth import authenticate,login,logout


def loginSubmit(request):
	result = {
		'code': 0,
		'msg': 'success',
	}
	username = request.POST.get('username', None)
	password = request.POST.get('password', None)
	if username and password:
		username = username.strip()
		try:
			ldap_user = authenticate(username=username, password=password)
			# 验证通过后,可以看到,本地user表中,会自动添加一条同步的用户信息
			if ldap_user:
				login(request, ldap_user)
		except Exception as e:
			result["msg"] = e
	return JsonResponse(result, safe=False)

还可以使用@login_required装饰器,拦截未登录状态其他url访问

自己也封装了一个类,不使用Django的登录认证(还是Django自带的好用

ladplogin.py

import ldap
from testPlatform import settings

# 加载log配置
import logging
logger = logging.getLogger()

'''
实现LDAP用户登录验证,首先获取用户的dn,然后再验证用户名和密码
'''

# 登陆 地址
LDAP_URI = settings.AUTH_LDAP_SERVER_URI
# 登陆 账户
LDAP_USER = settings.AUTH_LDAP_BIND_DN
# 登陆 密码
LDAP_PASS = settings.AUTH_LDAP_BIND_PASSWORD
# 默认 区域
BASE_DN = settings.base_dn


class LDAPTool(object):
    def __init__(self,
                 ldap_uri=None,
                 base_dn=None,
                 user=None,
                 password=None):
        """
        初始化
        :param ldap_uri: ldap_uri
        :param user: 默认用户
        :param password: 默认密码
        :return:
        """
        if not ldap_uri:
            ldap_uri = LDAP_URI
        if not base_dn:
            self.base_dn = BASE_DN
        if not user:
            self.admin_user = LDAP_USER
        if not password:
            self.admin_password = LDAP_PASS
        try:
            self.ldapconn = ldap.initialize(ldap_uri)
            # 绑定用户名、密码
            self.ldapconn.simple_bind_s(self.admin_user, self.admin_password)
        except ldap.LDAPError as e:
            logger.error('ldap conn失败,原因为: %s' % str(e))

    def ldap_search_dn(self, user, psw):
        """
        # 根据表单提交的用户名,检索该用户的dn,一条dn就相当于数据库里的一条记录。
        :param user: 用户名
        :param psw: 用户密码
        :return:
        """
        obj = self.ldapconn
        obj.protocal_version = ldap.VERSION3
        searchScope = ldap.SCOPE_SUBTREE
        retrieveAttributes = None
        searchFilter = "sAMAccountName=" + user
        try:
            ldap_result_id = obj.search(
                base=self.base_dn,
                scope=searchScope,
                filterstr=searchFilter,
                attrlist=retrieveAttributes
            )
            result_type, result_data = obj.result(ldap_result_id, 0)
            if result_type == ldap.RES_SEARCH_ENTRY:
                userDN = result_data[0][0]
                loginre = self.login_ldap(userDN, psw)
                return loginre
            else:
                logger.error('ldap search %s 失败,用户不存在' % user)
                return '用户名不存在'
        except ldap.LDAPError as e:
            logger.error('ldap search %s 失败,原因为: %s' % (user, str(e)))

    def login_ldap(self, userDN, psw):
        try:
            result = self.ldapconn.simple_bind_s(userDN, psw)
            if result:
                return 1
        except ldap.LDAPError as e:
            logger.error("登录LDAP用户%s失败,原因为: %s" % (userDN, str(e)))
            return "密码错误"

在view.py中调用这个类,使用session保存登录状态

def loginSubmit(request):
	result = {
		'code': 0,
		'msg': 'success',
	}
	username = request.POST.get('username', None)
	password = request.POST.get('password', None)
	if username and password:
		username = username.strip()
		try:
			res = LDAPTool().ldap_search_dn(username, password)
			if res == 1:
				request.session['is_login'] = True
				request.session['user_name'] = username
			else:
				result["msg"] = res
		except Exception as e:
			result["msg"] = e
	return JsonResponse(result, safe=False)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个用于建立Web应用程序的开源Python框架,而ChatGPT是一个人工智能聊天机器人模型。要在Django接入ChatGPT,需要进行以下步骤: 1. 安装ChatGPT:首先,需要从OpenAI官方网站获取ChatGPT模型的API密钥,并使用该密钥将ChatGPT模型下载到本地。 2. Django项目配置:在Django项目的设置文件中,添加ChatGPT所需的相关配置,包括API密钥、模型路径等。确保将ChatGPT的配置信息与Django项目的配置文件连接起来。 3. 创建视图函数:在Django项目中创建一个接收用户请求并调用ChatGPT模型的视图函数。可以使用Django的内置视图函数或自定义视图函数来实现。 4. 处理用户输入:在视图函数中获取用户输入的文本,并将其作为输入传递给ChatGPT模型进行处理。可以使用Django的请求对象来获取用户输入数据。 5. 调用ChatGPT:使用API密钥和模型路径,将用户输入传递给ChatGPT模型进行处理。可以使用ChatGPT提供的Python API来进行调用,并获取机器人生成的回复。 6. 构建并返回响应:将ChatGPT生成的回复构建成Django的响应对象,并将其返回给用户。可以使用Django内置的HttpResponse类或JsonResponse类来构建响应。 7. 前端展示:在前端页面中将用户的请求和ChatGPT生成的回复展示出来,可以使用Django的模板语言来渲染页面。 通过以上步骤,我们就可以在Django项目中成功接入ChatGPT,并实现一个基于Web的聊天机器人应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值