Domanda

Sono sicuro che è un requisito molti sviluppatori hanno affrontato prima:. Azienda ha bisogno di una pista di controllo per sapere chi sta eseguendo le azioni nel loro sistema

Indipendentemente da come si sceglie di memorizzare le informazioni sottoposto a revisione, il nucleo di questo problema è come identificare l'utente corrente.

Voglio scrivere componenti, che vanno dai piccoli classi del modello del dominio a componenti di servizio, tutto quello che può tranquillamente essere chiamato da qualsiasi delle seguenti applicazioni host:

  • Un'applicazione desktop di Windows.
  • Un sito ASP.NET ospitato in IIS.
  • Un servizio WCF ospitato in IIS.
  • Un servizio WCF ospitato in un servizio di Windows.

Data la gamma di tecnologie, i vari modelli di autenticazione e di dover spiegare il concetto di un utente "anonimo", io non sono chiare su una strategia da utilizzare per ottenere l'identità di chi invocato il mio componente in modo centralizzato .

Chi di voi intelligenti popolare suggerire un approccio per affrontare questo?

È stato utile?

Soluzione

Vorrei genere richiedono che le applicazioni impostate Thread.CurrentPrincipal a un'entità la cui identità rappresenta l'utente corrente. Questo può essere fatto all'avvio dell'applicazione (utilizzando WindowsIdentity.GetCurrent ()) in un client WinForms (o Console) applicazione, da HttpContext.Current.User o Roles.GetCurrentUser () in un'applicazione ASP.NET o WCF ospitato in IIS, etc .

Poi, nei componenti di livello inferiore è sufficiente utilizzare Thread.CurrentPrincipal.Identity per la revisione.

Modifica . (In risposta al commento) - notare che Thread.CurrentPrincipal.Identity non ha nulla a che vedere con il contesto di protezione del thread: questo è rappresentato dal WindowsIdentity e può essere recuperato utilizzando WindowsIdentity.GetCurrent e modificato utilizzando WindowsIdentity.Impersonate

Altri suggerimenti

L'approccio migliore, utilizzando le tecniche più attuali, è probabilmente quello di utilizzare di Windows Identity Foundation .

WIF è stato progettato per gestire i problemi di identità degli utenti attraverso molteplici tecnologie che utilizzano .NET.

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