Domanda

Ho un'app che utilizza la rappresentazione per tutto. Ma quando un utente ha effettuato l'accesso come amministratore, alcune operazioni richiedono che scrivano sul server stesso. Ora, se questi utenti non hanno diritti sul server effettivo (alcuni non lo fanno), non li lasceranno scrivere.

Quello che voglio fare è disattivare la rappresentazione per solo un paio di comandi.

C'è un modo per fare qualcosa del genere?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

Grazie.

È stato utile?

Soluzione

Assicurati che il pool di applicazioni disponga dei diritti appropriati di cui hai bisogno.

Quindi, quando si desidera ripristinare l'identità del pool di applicazioni ... eseguire quanto segue:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

Altri suggerimenti

Non sono sicuro che questo sia l'approccio preferito, ma quando volevo farlo ho creato un'istanza di WindowsIdentity e chiamato Impersonate . Ciò consente al codice successivo di rappresentare un altro utente di Windows. Restituisce un WindowsImpersonationContext che ha un < a href = "http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.undo.aspx" rel = "nofollow noreferrer"> Annulla che ripristina il contesto di rappresentazione di nuovo indietro.

È possibile disattivare l'autenticazione per la pagina e quindi impersonare manualmente l'utente autenticato durante il resto del codice.

http://support.microsoft.com/kb/306158

Questo ha un riferimento a quest'ultima parte, ma fondamentalmente si impersona User.Identity

Ciò significa che dovrai impersonare all'inizio di qualsiasi chiamata alla pagina, spegnerlo quando ne hai bisogno, quindi riaccenderlo quando hai finito, ma dovrebbe essere una soluzione praticabile.

Ho appena finito di dare alle cartelle le autorizzazioni di scrittura per " Utenti autenticati "

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