[英]How to connect Django to MSSQL with Windows Authentication
类似于这个问题:
如何使用 windows 身份验证从另一个域中的 windows 工作站连接到 MS SQL 服务器,使用 ZA72115F3541B5627
我当前的数据库配置如下所示:
'default': {
'ENGINE': "sql_server.pyodbc",
'HOST': "myServer\server1",
'USER': "myUserName",
'PASSWORD': "myPassWord",
'NAME': "myDB"
但是,我想通过 Windows 身份验证,以便我可以跟踪谁在对数据库进行更改。 我通过 IIS 启用了 Windows 身份验证,因此在用户访问我的应用程序时会提示登录。 我已经尝试过了,但没有奏效:
'default': {
'ENGINE': "sql_server.pyodbc",
'HOST': "myServer\server1",
'trusted_connection': 'yes'
'NAME': "myDB"
有没有办法通过 windows 身份验证到 Django 数据库设置?
我不确定您是否可以使用客户端的窗口用户名作为到 SQL Server 的可信连接的身份验证器。
如果您将 Web 应用程序设置为使用 AD 身份验证(受信任的连接),如 Windows 身份验证,则您的 Web 应用程序将使用在您的服务器上托管您的 Web 应用程序的 Windows 帐户连接到您的 SQL Server。
要完成跟踪哪些用户对 SQL Server 中的表进行了哪些编辑...如果您正在跟踪谁对 tableA 进行了编辑:
查看此模块https://pypi.org/project/django-windowsauth/
您可以使用此模块通过 IIS 将 Windows 身份验证集成到您的 Django 项目中。
然后,您可以将create_by
/ updated_by
字段添加到您想要的任何模型。
from django.contrib.auth.models import get_user_model()
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
created_by = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
# ...
使用请求上下文中的用户,您可以像这样设置字段:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreate(LoginRequiredMixin, CreateView):
model = Author
fields = ['name']
def form_valid(self, form):
form.instance.created_by = self.request.user
return super().form_valid(form)
或者像这样使用 DRF:
class YourView(generics.ListCreateAPIView):
...
def perform_create(self, serializer):
serializer.save(user=self.request.user)
如何在 Django Rest Framework 中将当前用户设置为用户字段?
同样适用于update_by
字段,但我建议您查看这个很棒的模块https://pypi.org/project/django-simple-history/
我们可以使用mssql-django使用Windows 身份验证将Django连接到MSSQL(SQL Server) 。
首先,将下面的代码设置为“settings.py” ,通过Windows Authentication将Django连接到MSSQL 。 下面的代码是Django和MSSQL在同一台 Windows 计算机(localhost)中的示例, “ENGINE”必须为“mssql” , “NAME”用于数据库名称(DB 名称)“test”和“DESKTOP-QVRCPTA”用于“主机”是Windows 计算机名称(设备名称) 。 *将“PORT”留空,因为如果设置任何端口号,例如“2244” 、 “9877”甚至“1433” ,这是MSSQL的默认端口号,都会出错:
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql', # Must be "mssql"
'NAME':'test', # DB name "test"
'HOST':'DESKTOP-QVRCPTA\SQLEXPRESS', # <server>\<instance>
'PORT':'',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
此外, “DESKTOP-QVRCPTA”可以替换为“localhost” , “USER”和“PASSWORD”可以放入空字符串, “PORT”可以删除,如下图所示,通过Windows 身份验证将Django连接到MSSQL :
# "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',
},
}
}
接下来,安装最新的 package mssql-django :
pip install mssql-django
然后,进行迁移并迁移:
python manage.py makemigrations && python manage.py migrate
然后,创建超级用户:
python manage.py createsuperuser
现在,我们可以使用Windows Authentication将Django连接到MSSQL ,然后为“test”数据库创建表。 *默认模式“dbo”放在表名之前,如下所示:
而且,这是Django 管理员:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.