2009-07-31 22 views
14

Önkoşul Detay .NET 2.0 ÇalışmaGeçerli kullanıcının SID'sini almanın en iyi yolu nedir?

  1. .
  2. Kod, ASP.Net, Windows Forms veya Console uygulamasından çağrılabilen ortak bir kitaplıktadır.
  3. Bir Windows Gezgini'nde şirket ağında çalışıyor.

Soru

geçerli kullanıcının SID değerini almak için en iyi yolu nedir? Uygulamayı yürüten kimlikten değil, arabirime erişen kullanıcıdan bahsetmiyorum. Arka plan uygulamaları ve masaüstü tabanlı uygulamalarda, bu uygulama aslında gerçekte uygulamayı yürüten bir kimlik olmalı, ancak ASP.Net'te (dağılmadan), bu HttpContext.Current.User SID olmalıdır.

Halihazırdaki Yöntem

Bu şu anda ne var olduğunu. Sadece yanlış görünüyor. O iğrenç. Bunu yapmanın daha iyi bir yolu var mı, yoksa bazılarını sizin için yapan sınıfta mı var?

public static SecurityIdentifier SID 
{ 
    get 
    { 
     WindowsIdentity identity = null; 

     if (HttpContext.Current == null) 
     { 
      identity = WindowsIdentity.GetCurrent(); 
     } 
     else 
     { 
      identity = HttpContext.Current.User.Identity as WindowsIdentity; 
     } 

     return identity.User; 
    } 
} 

cevap

3

Bu bilgi de kazandırma konusunda daha yol var sanmıyorum - yakaladınız nasılsa WindowsPrincipal almak lazım ve .NET'in oldukça temiz API Kullanıcı nesnenin arkasındaki o soyutlar. Bunu güzel bırakıp bir yöntemle sardım ve bir gün diyorum.

Eh, tamam, yapmanız gereken tek şey var sıfır kimlik kontrol ve sahip kuralları neyse göre idare olacaktır, (web kullanıcıları hepWindowsIdentity olacak olmadıkça).

+1

Kullanıcı her zaman bir kimliğe sahip olacaktır (eğer daha sonra bu daha büyük bir sorun değilse). Cevap için teşekkürler. –

1

WindowsIdentity sınıfı "sizin için bunu gerçekleştiren yerleşik sınıftır". Çalışmak için geçerli bir WindowsIdentity'iniz olduğu sürece gerçekten alacağınız kadar basit bir çözümünüz var.

Alternatif olarak, söz konusu kullanıcının kullanıcı adına sahipseniz ve SID'yi doğrudan AD'den almak istiyorsanız, DirectoryServices ad alanını kullanmak için kendi kitaplığınızı oluşturabilir ve DirectoryEntry'nizi kullanıcı için alabilirsiniz (bu adil bir şekilde) DirectoryServices zor bir süreçtir karmaşık). İhtiyacınız varsa, LDAP'yi bile kullanabilirsiniz.

0

Üçüncü taraf kitaplıklarını kullanmadan Kullanıcı, kullanıcı adını değiştirdiyse, bu kod doğru sonuçlar verecektir.

İlgili konular