[英]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.