調用我有一個名爲的帳戶下運行的網頁存儲過程獲取網站用戶的Windows登錄名,WebUser
(IIS該帳戶下運行)如何從通過網站
現在這裏的問題是,當該網頁由用戶(內聯網)訪問,
用戶通過認證Windows認證。
該網頁調用存儲過程SaveClientInfo
。 當我試圖通過SYSTEM_USER
來獲取用戶名(比如,用戶1)誰在呼喚SaveClientInfo
,
我得到WEBUSER,而不是用戶1有沒有辦法讓用戶1 from SaveClientInfo
而不必將用戶名傳遞給存儲過程?
下面是相關一塊存儲過程定義
create procedure SaveClientInfo
@ClientID int
... --; other parameters
as
begin
declare @UserName sysname
--; returns the name of user name that IIS runs under
--; But I would like to log the name of the person
--; who is accesing the site through Windows Authentication
select @UserName = SYSTEM_USER
--; Save client data and the person who saved the info
...
end
GO
我試圖避免必須爲每個* sprocs創建一個新參數,如@ UserName,以保存信息。 – Sung 2009-10-24 15:53:48
問題是,正如Chris J指出的那樣,登錄用戶不會與SQL服務器通話。 ASP.NET是使用自己的權限。你將*有*傳遞一些參數來識別用戶。無論是會話ID,用戶名還是你有什麼,都沒有真正的方法來避免這種情況。 另外,恕我直言,這樣做是不好的數據庫和DAL設計。 – 2009-10-25 16:08:40