首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IIS7的Windows身份验证通过django-pyodbc验证MSSQL

使用IIS7的Windows身份验证通过django-pyodbc验证MSSQL
EN

Stack Overflow用户
提问于 2016-05-25 18:15:08
回答 3查看 5.1K关注 0票数 4

我正在为我的雇主构建内部网,我决定尝试安装django服务器。我们使用包含大量数据的MSSQL 2008 windows服务器。我希望将内部网与用于身份验证的域和现有的MSSQL服务器集成起来。

一切似乎都在与MSSQL服务器的连接上进行。这个问题似乎很简单:它试图使用错误的凭据。我已经将IIS设置为使用windows身份验证并禁用匿名登录。当我进入网站时,我会被提示输入我的证书。当页面试图加载时,django抛出一个异常错误:

代码语言:javascript
复制
Exception Type: Error
Exception Value: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'DOMAIN\\DJANGO$'. (18456) (SQLDriverConnect)")
Exception Location: c:\python35\lib\site-packages\sql_server\pyodbc\base.py in get_new_connection, line 301

请注意,DJANGO是我用来测试此服务器的虚拟计算机的名称。解决方案似乎就像找出如何通过django为初始MSSQL连接从IIS传递窗口登录凭据一样简单。

关于一些细节,我有:

我有django settings.py条目:

代码语言:javascript
复制
...
MIDDLEWARE_CLASSES = [
  ...
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.PersistentRemoteUserMiddelware',
  ...
]
...
WSGI_APPLICATION = 'intranet.wsgi.application' #intranet is the project name
...
DATABASES = {
  'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'DatabaseName',
    'HOST': 'Server',
    'AUTOCOMMIT': False,
  }
}
...
AUTHENTICATION_BACKENDS = [
  'django.contrib.auth.backends.RemoteUserBackend',
]
...

IIS和django之间的交互是基于https://pypi.python.org/pypi/wfastcgi的教程进行的,WSIG_HANDLER被IIS上的Django : django.core.exceptions.AppRegistryNotReady:应用程序尚未加载的建议所更改(由于intranet没有一个名为wsgi_app()的模块,所以提示进行更改,不确定我是如何尝试的,但它成功了,我继续前进)。

要走到这一步需要付出很大的努力,希望这是一个简单的解决办法。我的另一个想法是放弃django sql模型系统,处理直接查询,但我宁愿在重新开发轮子之前以‘正确’的方式完成它。

EN

回答 3

Stack Overflow用户

发布于 2020-08-06 08:52:52

对于任何试图在Django游戏中跑来跑去的人来说,现在有点晚了,尝试一下,它对我来说是有效的:

代码语言:javascript
复制
DATABASES = {
'default': {
    'NAME': 'my_database',
    'ENGINE': 'sql_server.pyodbc',
    'HOST': 'dbserver',
    'PORT': 'XXXX',
    'OPTIONS': { 'DRIVER':'SQL Server Native Client 11.0', 'Extra_Params':'Trusted_Connection=True'},
}}

编码愉快!

票数 0
EN

Stack Overflow用户

发布于 2020-11-22 08:00:42

我有这个问题,并为我节省了此链接教程

对于Django应用程序,只需将连接更改为下面的代码,并与Identity=本地系统完美地工作

代码语言:javascript
复制
cnxn = pyodbc.connect(
        "Driver={SQL Server Native Client 11.0};Server=MyServerName;Database=MyDbName; uid=MyUsernameLoginDb; pwd=MyDbPasswordLoginToDB; ")
票数 0
EN

Stack Overflow用户

发布于 2022-08-31 14:29:22

我们可以将Django连接到MSSQL( Server)和使用mssql-djangoWindows身份验证

首先,用我们的服务器名连接到MSSQL( Server)。*我使用 Server 2019 Express

接下来,从数据库中单击“新建数据库.”

然后,将"test" to 数据库名称:“,然后单击"OK"

然后,创建"test“数据库

接下来,从"Properties"服务器名称中单击

然后,从"Security"中,我们可以检查“服务器身份验证”是默认设置的"Windows身份验证模式“。实际上,我们可以将Django与MSSQL连接到"Windows身份验证模式“

此外,我们还可以将Django连接到MSSQL与“Server和Windows身份验证模式”,这样两种模式都可以将Django连接到MSSQLE 252E 153Windows身份验证<代码>E 254

接下来,将下面的代码设置为"settings.py",将Django与MSSQL与Windows身份验证连接起来。下面的代码是"DESKTOP-QVRCPTA"计算机(本地主机)和“引擎”必须是“mssql”< code >E 273和E 174“name”e 275的中的Django和MSSQL的示例,它们用于E 176数据库名“test”E 277,而对于E 180“主机”E 281/code>是E 182 Windows计算机名称(设备名称)<>E 283代码。*对于“端口”,请保持空白,因为如果设置任何端口号(如"2244"、"9877"甚至"1433",即MSSQLE 293的默认端口号),将出现错误。

代码语言:javascript
复制
# "settings.py"

DATABASES = {
    'default':{
        'ENGINE':'mssql',                    # Must be "mssql"
        'NAME':'test',                       # DB name
        'HOST':'DESKTOP-QVRCPTA\SQLEXPRESS', # <server>\<instance>
        'PORT':'',                           
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

此外,可以将"DESKTOP-QVRCPTA"替换为"localhost"和用户“”,而"PASSWORD"可以放入空字符串,而“端口”可以删除如下所示,以便将DjangoE 2108连接到E 1109MSSQLE 2110与Windows身份验证E 2112

代码语言:javascript
复制
# "settings.py"

DATABASES = {
    'default':{
        'ENGINE':'mssql',
        'NAME':'test',
        'USER':'',                     # Here
        'PASSWORD':'',                 # Here
        'HOST':'localhost\SQLEXPRESS', # Here
        # 'PORT':'',                   # Here      
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

接下来,安装--最新的软件包 mssql-django

代码语言:javascript
复制
pip install mssql-django

然后,进行迁移并迁移:

代码语言:javascript
复制
python manage.py makemigrations && python manage.py migrate

然后,创建超级用户:

代码语言:javascript
复制
python manage.py createsuperuser

现在,我们可以将Django连接到MSSQL和Windows身份验证,然后为“测试”数据库创建表。*默认模式"dbo"放在表名之前,如下所示:

这位是Django Admin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37444778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档