Posso disattivare la rappresentazione solo in un paio di casi
-
02-07-2019 - |
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.
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 "