调用我有一个名为的帐户下运行的网页存储过程获取网站用户的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