- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我扩展了 UserPrincipal 类以检索我需要的一些缺失的属性:
[DirectoryObjectClass("user")]
[DirectoryRdnPrefix("CN")]
class UserPrincipalExt : UserPrincipal
{
public UserPrincipalExt(PrincipalContext context)
: base(context)
{
}
[DirectoryProperty("department")]
public string Department
{
get
{
if (ExtensionGet("department").Length != 1)
return null;
return (string)ExtensionGet("department")[0];
}
set
{
this.ExtensionSet("department", value);
}
}
[DirectoryProperty("company")]
public string Company
{
get
{
if (ExtensionGet("company").Length != 1)
return null;
return (string)ExtensionGet("company")[0];
}
set
{
this.ExtensionSet("company", value);
}
}
[DirectoryProperty("c")]
public string CountryAbbreviation
{
get
{
if (ExtensionGet("c").Length != 1)
return null;
return (string)ExtensionGet("c")[0];
}
set
{
this.ExtensionSet("c", value);
}
}
}
然后,我可以像这样轻松搜索:
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, myDomain);
UserPrincipalExt userExt = new UserPrincipalExt(principalContext);
PrincipalSearcher searcher = new PrincipalSearcher(userExt);
userExt.GivenName = "blabla";
userExt.EmailAddress ="text here";
PrincipalSearchResult<Principal> searchTmp = null;
searcher.QueryFilter = userExt;
searchTmp = searcher.FindAll();
因此,我的新任务和我当前的问题是:对于在 ActiveDirectory 中搜索到的组,有必要使用扩展类获取用户列表。
GroupPrincipal group = (GroupPrincipal)collection.FirstOrDefault();
foreach (Principal pRes in group.GetMembers())
{
//This doesnt work of course.
// return null value.
UserPrincipalExt user = pRes as UserPrincipalExt;
}
我怎样才能实现目标?
作为解决方法,我已经创建了一个函数来检索属性:
private string GetExtendedProperty(Principal principal, string propertyTo)
{
string property = "";
try
{
DirectoryEntry directoryEntry = principal.GetUnderlyingObject() as DirectoryEntry;
if (directoryEntry.Properties.Contains(propertyTo))
{
property = directoryEntry.Properties[propertyTo].Value.ToString();
}
else
{
property = "";
}
}
catch (Exception ex)
{
Logger.ScriviLog(4, this.GetType().Name, MethodBase.GetCurrentMethod().Name, ex.Message);
}
return property;
}
提前谢谢你。
最佳答案
覆盖扩展类中的 FindByIdentity 方法。
public new static User FindByIdentity(PrincipalContext context, string identityValue)
{
return (User)FindByIdentityWithType(context, typeof(User), identityValue);
}
public new static User FindByIdentity(PrincipalContext context, IdentityType identityType, string identityValue)
{
return (User)FindByIdentityWithType(context, typeof(User), identityType, identityValue);
}
然后使用扩展类的FindByIdentity方法进行搜索
var user = User.FindByIdentity(
DomainContext,
"name"
);
查看此 Link
关于c# - 扩展 UserPrincipal 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24798037/
我有一个 Active Directory 搜索器,可以使用 UserPrincipal 对象获取用户的详细信息。我正在使用 System.DirectoryServices 和 System.Dir
我正在使用 ASP.Net 4.0 MVC 查询事件目录。我正在尝试获取用户组成员身份的列表并遍历它们。我有一个奇怪的问题。要获取我正在使用的组: PrincipalSearchResult g
我是事件目录的新手,我目前正在为一个项目开发一个库,以轻松管理我们的事件目录对象,如用户、资源、组等。 该库位于 .NetStandard 2.0 中,我使用的是 Principal 类 System
我想使用 JSF 创建一个登录表单,该表单还在外部上下文中创建一个新的 UserPrincipal。 当我想在外部 FacesContext 中创建新的 UserPrincipal 时,我必须做什么?
[JEE、MVC-JSP+Servlet、TomEE] 使用基于表单的声明式身份验证(容器管理)。是否可以显式设置UserPrincipal? (登录某些用户)。 我知道我可以使用 request.g
在查看托管网站时,我在我的项目中收到经典的对象引用未设置为对象的实例。在本地构建调试版本时有效。 直播 显示错误消息的代码示例: using System.DirectoryServices
在开始之前,我想说明一下,我可以使用 DirectoryServices 命名空间来执行此操作。我只想知道如何不使用 DirectoryServices 来解决我的以下问题。 我想做的是使用 Dire
我正在使用 C# 代码查询 Active Directory。我遇到的主要问题是确定帐户是否已被禁用。翻阅许多在线文章,似乎不能仅依靠属性 UserPrincipal.Enabled 来确定用户帐户是
我有一个类可以处理交换邮箱的密码更改和过期检查。我在 UserPrincipal 上检查 LastPasswordSet。 那么 TDD 呢? 我想通过编写一些测试来检查我的类(class)是否正确处
我正在尝试使用以下代码获取用户的所有Active Directory组: private static IEnumerable GetGroupNames(string userName)
通过 UserPrincipal 类,我可以设置 UserPrincipalName,因此在创建我的用户时,会填充用户登录名的第一部分: up.UserPrincipalName = "ryan.an
通过 UserPrincipal 类,我可以设置 UserPrincipalName,因此在创建我的用户时,会填充用户登录名的第一部分: up.UserPrincipalName = "ryan.an
我正在执行以下操作: How do I get the name of a file's owner in Java on OSX? 这是我的代码: private String getOwner(F
以下代码返回给定组名的 UserPricipal。但是删除组后,此代码仍然返回给我一个 UserPrincipal (已删除的)。有没有办法删除这个“缓存”? UserPrincipalLookupS
我正在尝试使用一种方法来接收用户名,如果该用户是本地管理员(不是在整个域中,只是在本地计算机上),则返回 true,否则返回 false。我试图改变在 In .NET/C# test if proce
我扩展了 UserPrincipal 类以检索我需要的一些缺失的属性: [DirectoryObjectClass("user")] [DirectoryRdnPrefix("CN")] class
这个问题在这里已经有了答案: Adding address information to active directory users (1 个回答) 关闭 5 年前。 我又被 AD 困住了。谁能给
我有一个包含很多属性的 UserPrincipal 对象,但我找不到密码过期日期的属性。 如何做到这一点? 最佳答案 这是我能想到的最简单的方法... using System.DirectorySe
我正在尝试使用 .NET System.DirectoryServices.AccountManagement 库来获取特定 Active Directory 用户的 UserPrincipal。 我
出于某种原因,GetAuthorizationGroups() 似乎需要大约 20 秒才能返回组。我正在使用这段代码: UserPrincipal user; // This takes 20 sec
我是一名优秀的程序员,十分优秀!