Posso desligar representação apenas em casos casal
-
02-07-2019 - |
Pergunta
Eu tenho um aplicativo que tem representação utilizados por toda parte. Mas quando um usuário está conectado como um administrador, uma operação de poucos obrigá-los a escrever para o próprio servidor. Agora, se esses usuários não têm direitos sobre o servidor real (alguns não) que não vai deixá-los escrever.
O que eu quero fazer é desligar representação para apenas comandos casal.
Existe uma maneira de fazer algo assim?
using(HostingEnvironment.Impersonate.Off())
//I know this isn't a command, but you get the idea?
Obrigado.
Solução
Verifique se o pool de aplicativos não tem os direitos adequados que você precisa.
Então, quando você quiser reverter para a identidade do agrupamento de aplicações ... execute o seguinte:
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 { }
}
Outras dicas
Eu não tenho certeza se esta é a abordagem preferida, mas quando eu queria fazer isso eu new'd-se uma instância de uma WindowsIdentity e chamou o método Impersonate . Isso permite que código subseqüente para representar um usuário diferente do Windows. Ele retorna um WindowsImpersonationContext que tem um < a href = "http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.undo.aspx" rel => método Undo "noreferrer nofollow", que reverte o contexto de representação volta novamente.
Você pode desativar a autenticação para a página e, em seguida, passar por manualmente o usuário autenticado durante o resto do seu código.
http://support.microsoft.com/kb/306158
Isto tem uma referência a essa última parte, mas basicamente você representar User.Identity
Isto significa que você terá que passar no início de qualquer chamada para a página, desligá-lo quando você precisar dele fora, em seguida, ligá-lo novamente quando tiver terminado, mas deve ser uma solução viável.
Eu só acabou dando as pastas escrever permissões para "usuários autenticados"