Come ottenere il nome di accesso a Windows dell'utente del sito Web dalla procedura memorizzata richiamata attraverso il sito Web

StackOverflow https://stackoverflow.com/questions/1618289

Domanda

Ho una pagina web che funziona con un account chiamato WebUser (IIS funziona con questo account)

Ora il problema qui è che, quando gli utenti (intranet) accedono alla pagina web,
gli utenti vengono autenticati tramite Autenticazione di Windows .

La pagina web chiama una procedura memorizzata, SaveClientInfo . Quando stavo cercando di ottenere il nome dell'utente (ad esempio, Utente1 ) che stava chiamando SaveClientInfo ,
Stavo ottenendo WebUser anziché Utente1 tramite SYSTEM_USER

Esiste un modo per ottenere Utente1 da SaveClientInfo senza dover passare il nome utente alla procedura memorizzata?

Ecco la parte rilevante della definizione di 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
È stato utile?

Soluzione

A meno che non si usi la rappresentazione nella propria app Web, quindi l'applicazione Web si connette come utente autenticato di Windows, no, non è possibile.

Altri suggerimenti

Il recupero del nome dell'utente da SQL dovrebbe fornire semplicemente il nome utente associato alla connessione, in genere l'account utente utilizzato da ASP.NET.

Sul lato .NET, è possibile utilizzare (C #)

string s = Environment.User.Identity.Name

per recuperare il nome dell'utente che ha effettuato l'accesso al tuo sito. Usiamo questo per tracciare chi sta apportando modifiche al db attraverso il nostro sito di amministrazione, tra gli altri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top