Как получить имя пользователя Windows для входа в систему из хранимой процедуры, вызываемой через сайт - PullRequest
0 голосов
/ 24 октября 2009

У меня есть веб-страница, которая работает под учетной записью с именем WebUser (IIS работает под этой учетной записью)

Теперь проблема в том, что, когда пользователи обращаются к веб-странице (интранет),
пользователи аутентифицируются через Windows Authentication .

Веб-страница вызывает хранимую процедуру, SaveClientInfo. Когда я пытался получить имя пользователя (скажем, User1 ), который звонил SaveClientInfo,
Я получаю WebUser вместо Пользователь1 через SYSTEM_USER

Есть ли способ получить User1 из SaveClientInfo без необходимости передавать имя пользователя в хранимую процедуру?

Вот соответствующий фрагмент определения sproc

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

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Если вы не используете олицетворение в своем веб-приложении, поэтому веб-приложение подключается как аутентифицированный пользователь Windows, нет, вы не можете.

0 голосов
/ 24 октября 2009

Извлечение имени пользователя из SQL должно просто дать вам имя пользователя, связанное с соединением - обычно это учетная запись пользователя, используемая в ASP.NET.

На стороне .NET вы можете использовать (C #)

string s = Environment.User.Identity.Name

для получения имени пользователя, вошедшего на ваш сайт. Мы используем это для отслеживания того, кто вносит изменения в базу данных через наш сайт администратора, среди прочего.

...