আপনি .NET 3.5 বা তার বেশি থাকলে আপনি নতুন System.DirectoryServices.AccountManagement
(এসডিএস.এএম) নাম স্থানটি ব্যবহার করতে পারেন যা এটি আগের চেয়ে অনেক সহজ করে তোলে।
এটি সম্পর্কে সমস্ত এখানে পড়ুন: .NET ফ্রেমওয়ার্ক 3.5 তে ডিরেক্টরি সুরক্ষা অধ্যক্ষগুলি পরিচালনা করা
আপডেট: পুরানো এমএসডিএন ম্যাগাজিনের আর্টিকেলগুলি আর অনলাইনে নেই, দুর্ভাগ্যক্রমে - আপনাকে মাইক্রোসফ্ট থেকে ২০০৮ সালের জানুয়ারির এমএসডিএন ম্যাগাজিনের জন্য সিএইচএম ডাউনলোড করতে হবে এবং সেখানে নিবন্ধটি পড়তে হবে।
মূলত, আপনার একটি "প্রধান প্রসঙ্গ" (সাধারণত আপনার ডোমেন), একজন ব্যবহারকারী অধ্যক্ষ হওয়া দরকার এবং তারপরে আপনি খুব সহজেই এর গ্রুপগুলি পান:
public List<GroupPrincipal> GetGroups(string userName)
{
List<GroupPrincipal> result = new List<GroupPrincipal>();
// establish domain context
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);
// if found - grab its groups
if(user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
// iterate over all groups
foreach(Principal p in groups)
{
// make sure to add only group principals
if(p is GroupPrincipal)
{
result.Add((GroupPrincipal)p);
}
}
}
return result;
}
আর এটাই তো আছে! ব্যবহারকারীদের অনুমোদনের গোষ্ঠীগুলির একটি ফলাফল (একটি তালিকা) এখন আপনার কাছে রয়েছে - তাদের উপর পুনরাবৃত্তি করুন, তাদের নামগুলি বা আপনার যা কিছু করা দরকার তা মুদ্রণ করুন।
আপডেট: নির্দিষ্ট বৈশিষ্ট্য অ্যাক্সেস করার জন্য, যা UserPrincipal
বস্তুর উপরে প্রকাশিত হয়নি , আপনাকে অন্তর্নিহিত মধ্যে খনন করতে হবে DirectoryEntry
:
public string GetDepartment(Principal principal)
{
string result = string.Empty;
DirectoryEntry de = (principal.GetUnderlyingObject() as DirectoryEntry);
if (de != null)
{
if (de.Properties.Contains("department"))
{
result = de.Properties["department"][0].ToString();
}
}
return result;
}
আপডেট # 2: মনে হচ্ছে কোডের এই দুটি স্নিপেট একসাথে রাখা খুব কঠিন হওয়া উচিত নয় .... তবে ঠিক আছে - এটি এখানে যায়:
public string GetDepartment(string username)
{
string result = string.Empty;
// if you do repeated domain access, you might want to do this *once* outside this method,
// and pass it in as a second parameter!
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
// find the user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, username);
// if user is found
if(user != null)
{
// get DirectoryEntry underlying it
DirectoryEntry de = (user.GetUnderlyingObject() as DirectoryEntry);
if (de != null)
{
if (de.Properties.Contains("department"))
{
result = de.Properties["department"][0].ToString();
}
}
}
return result;
}
UserPrincipal
- এটি কীভাবে পাবেন তার জন্য আমার আপডেট উত্তর দেখুন।